• 栈的顺序存储结构以及实现


     1 #include "stdafx.h"
     2 #include <iostream>
     3 #include <exception>
     4 using namespace std;
     5 
     6 //栈的顺序存储结构及实现
     7 //栈的结构定义
     8 #define OK 1
     9 #define ERROR 0
    10 #define TRUE 1
    11 #define FALSE 0
    12 #define MAXSIZE 5
    13 typedef int sElemType;
    14 typedef int Status;
    15 typedef struct
    16 {
    17     sElemType data[MAXSIZE];
    18     int top;
    19 }SqStack;
    20 Status Init(SqStack *S)
    21 {
    22 
    23     for(int i = 0;i!=MAXSIZE;++i)
    24     {
    25         S->data[i]=0;
    26     }
    27     S->top = -1;
    28     return OK;
    29 }
    30 //压栈操作
    31 Status Push(SqStack *S,sElemType e)
    32 {
    33     if(S->top == MAXSIZE - 1)
    34     {
    35         cout<<"栈满"<<endl;
    36         return ERROR;
    37     }
    38     S->top++;
    39     S->data[S->top]=e;
    40     return OK;
    41 }
    42 //出栈操作
    43 Status Pop(SqStack *S,sElemType *e)
    44 {
    45     if(S->top == -1)
    46     {
    47         cout<<"栈空"<<endl;
    48         return ERROR;
    49     }
    50     *e = S->data[S->top];
    51     (S->top)--;
    52     return OK;
    53 }
    54 //输出栈内元素
    55 Status ReadStack(const SqStack *S)
    56 {
    57     cout<<"栈内元素:";
    58     for(int i = 0;i<=S->top;++i)
    59     {
    60         cout<<S->data[i]<<" ";
    61     }
    62     cout<<endl;
    63     return OK;
    64 }
    65 
    66 int _tmain(int argc, _TCHAR* argv[])
    67 {
    68     SqStack *stack = (SqStack*)malloc(sizeof(SqStack));
    69     Init(stack);//初始化栈
    70     Push(stack,1);//将1入栈
    71     Push(stack,2);//将2入栈
    72     Push(stack,3);//将3入栈
    73     Push(stack,4);//将4入栈
    74     ReadStack(stack);//输出栈内元素
    75     int popElem = 0;
    76     Pop(stack,&popElem);//出栈栈顶值赋予popElem
    77     cout<<"出栈:"<<popElem<<endl;
    78     Pop(stack,&popElem);//出栈栈顶值赋予popElem
    79     cout<<"出栈:"<<popElem<<endl;
    80     Pop(stack,&popElem);//出栈栈顶值赋予popElem
    81     cout<<"出栈:"<<popElem<<endl;
    82     ReadStack(stack);//输出栈内元素
    83     Pop(stack,&popElem);//出栈栈顶值赋予popElem
    84     cout<<"出栈:"<<popElem<<endl;
    85     return 0 ;
    86 }
  • 相关阅读:
    win7服务器从本地粘贴的文件,粘贴卡死
    AOP面向切面编程
    静态代理和动态代理
    查询数据库中第n行数据
    记录我的成长
    路径总和,双重递归
    java Queue 常用方法(持续更新)
    对称二叉树
    Linux学习之五——Linux虚拟机文件系统
    Linux学习之四——命令运行机制及查看命令帮助
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3540630.html
Copyright © 2020-2023  润新知