#include<stdio.h> #define MaxSize 10 typedef struct SqStack{ int data[MaxSize]; int top ; }SqStack; //初始化顺序栈 void initStack(SqStack &S){ S.top = -1; } //判断栈是否为空 /*栈理论上不存在为满的情况,取决于内存大小*/ int isEmpty(SqStack S){ if(S.top == -1){//top为1表示为空 return 1; }else{ return 0; } } //进栈操作 int push(SqStack &S,int e){ //进栈要判满 if(S.top == MaxSize-1){ return 0; } //先移动指针在进行复制 ++(S.top); S.data[S.top] = e; return 1; } //出栈操作 int pop(SqStack &S,int &e){ //出栈要判空 if(S.top == -1){ return 0; } //先进行赋值在移动指针 e = S.data[S.top]; --(S.top); return 1; } //展示栈中的元素 void show(SqStack &S){ int e; while(S.top>-1){ pop(S,e); printf("%d ",e); } } //持续往栈中存放元素 void put(SqStack &S){ initStack(S); ///一定要初始化 int e; scanf("%d",&e); while(S.top<MaxSize&&e!=-1){ push(S,e); printf("%d ===\n ",S.top); // printf("输入成功\n"); scanf("%d",&e); } } int main(){ SqStack S; put(S); show(S); return 0; }