#define Stack_Size 50/*顺序栈的操作(初始化,入栈,出栈,取栈顶元素)*/ #define FALSE 0 /*2009.08.10王红刚*/ #define TRUE 1 typedef int StackElemType; typedef struct { StackElemType elem[Stack_Size];//用数组模拟栈 int top; }SeqStack; void InitStack(SeqStack *s)//初始化 { s->top=-1; } int Push(SeqStack *s,StackElemType x)//入栈操作 { if(s->top==Stack_Size-1) return FALSE; s->top++; s->elem[s->top]=x; return TRUE; } int Pop(SeqStack *s,StackElemType *x)//出栈操作 { if(s->top==-1) return FALSE; else { *x=s->elem[s->top]; printf("%d/n",*x); s->top--; return TRUE; } } int GetTop(SeqStack *s,StackElemType *x)//取栈顶元素 { if(s->top==-1) return FALSE; else { *x=s->elem[s->top]; printf("%d",*x); return TRUE; } } void main() { SeqStack STA; int i,max,m; InitStack(&STA); printf("请输入栈中元素的个数:"); scanf("%d",&max); printf("/n请输入栈中的每个元素的值:"); for(i=0;i<=max-1;i++) { scanf("%d",&m); Push(&STA,m); } printf("/n栈顶元素是:"); GetTop(&STA,&m); printf("/n出栈的顺序为:/n"); for(i=0;i<=max-1;i++) Pop(&STA,&m); }