#include<iostream> #define MaxSize 50 typedef int DataType; using namespace std; //栈的数据结构 //顺序栈 /* 数据运算: 1.初始化一个空栈:初始指针==-1 2.数据元素入栈:如果栈没满,数据元素入栈 3.数据元素出栈:如果栈没空,数据元素出栈 4.得到栈顶元素:如果栈没空,取栈顶元素 5.销毁顺序栈 判断条件 1.栈空 s.top==-1 2.栈满 s.top=MaxSize-1 3.入栈语句:s.top先加,数据元素在入栈 s.data[++s.top]=x 4.出栈语句:数据元素先出栈,s.top后-- x=s.data[s.top--] */ typedef struct node{ DataType data[MaxSize]; //存放栈中的数据 int top; //存放栈顶指针 }SqStack; //初始一个空栈 void InitStack(SqStack &S){ S.top=-1; //初始时,栈顶指针指向-1 } //判断栈是否为空 bool StackEmpty(SqStack &S){ if(S.top==-1) return true; //栈空 else{ return false; //不空 } } //入栈,要判断栈是不是满了 bool Push(SqStack &S,DataType x){ if(S.top==MaxSize-1){ cout<<"栈满了!无法入栈"<<endl; return false; } S.data[++S.top]=x; return true; } //出栈,判断是不是在栈空 bool Pop(SqStack &S,DataType &x){ if(S.top==-1){ cout<<"顺序栈为空!,无法出栈"<<endl; return false; } x=S.data[S.top--]; return true; } //读出栈顶元素 bool GetTop(SqStack &S,DataType &x){ if(S.top==-1){ cout<<"顺序栈为空!无法读出"<<endl; return false; } x=S.data[S.top]; return true; } //销毁顺序栈 void DestoryStack(SqStack &S){ S.top==-1; } int main(){ SqStack S; InitStack(S); int x; Push(S,12); Pop(S,x); cout<<x<<endl; Pop(S,x); DestoryStack(S); return 0; }