#define MAXSIZE 10 typedef struct{ elemtype data[MAXSIZE]; int top; //栈顶指针 }SqStack; //初始化 void InitStack(SqStack &S){ S.top=-1; } void testStack(){ SqStack S; //声明一个顺序栈(分配空间) InitStack(S); } //判断栈空 bool StackEmpty(SqStack S){ if(S.top==-1) return true; else return false; } //新元素入栈 bool Push(SqStack &S,int x){ if(S.top==MAXSIZE-1) //栈满,报错 return false; S.top=S.top+1; //等价于 S.data[S.top]=x; //S.data[++S.top]=x return true; } //出栈操作 bool Pop(SqStack &S,int &x){ if(S.top==-1) return false; //栈空 x=S.data[S.top]; // x=S.data[S.top--] S.top=S.top-1; // return true; }
共享栈:两个栈共享同一片内存空间,两个栈从两边往中间增长
初始化:0号栈栈顶指针初始时top0=-1;1号栈栈顶指针初始时 top1=MAXSIZE
栈满条件:top0+1=top1
原文:https://www.cnblogs.com/ikigai18/p/12811676.html