#include#include #include #define MaxSize 5 typedef struct{ int data[MaxSize]; int top; }SqStack; int InitStack(SqStack *S){ S->top=-1; printf("该顺序栈已完成初始化nn"); return 1; } int length(SqStack S){ return (S.top+1); } int isEmpty(SqStack S){ if(S.top==-1) return 1; else return 0; } int Push(SqStack *S,int e){ if(S->top==MaxSize-1){ printf("该顺序栈已满 本次入栈操作非法nn"); return 0; } S->data[++S->top]=e; printf("本次入栈元素:%dnn",e); return 1; } int Pop(SqStack *S,int *e){ if(S->top==-1){ printf("该顺序栈为空 本次出栈操作非法nn"); return 0; } (*e)=S->data[S->top--]; printf("本次出栈元素:%dnn",*e); return 1; } int GetTop(SqStack S){ if(S.top==-1){ printf("该顺序栈为空 本次求栈顶操作非法nn"); return 0; } printf("顺序栈当前栈顶元素为:%dnn",S.data[S.top]); return (S.data[S.top]); } int main() { SqStack S; int discard; InitStack(&S); if(isEmpty(S)) printf("当前该顺序栈为空nn"); else printf("当前该顺序栈的长度为%dnn",length(S)); Push(&S,9); Push(&S,5); Push(&S,2); Push(&S,6); Push(&S,5); Push(&S,0); if(isEmpty(S)) printf("当前该顺序栈为空nn"); else printf("当前该顺序栈的长度为%dnn",length(S)); Pop(&S,&discard); if(isEmpty(S)) printf("当前该顺序栈为空nn"); else printf("当前该顺序栈的长度为%dnn",length(S)); GetTop(S); return 0; }



