<p><img src="http://img.blog.csdn.net/20150823142545135?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p>
/* 实现功能:用顺序表实现栈的各种操作 编译环境:Windows 64b,vc6.0 日期: 2015/7/20 作者:wtt561111 */ #define stack_max_num 10 #include "stdio.h" #include "stdlib.h" struct SeqStack{ int MAXNUM; int t;//始终指向栈顶 int *s; }; typedef struct SeqStack *PSeqStack; /* 创建一个空的堆栈,存储方式为顺序表 */ PSeqStack createEmptyStack_seq(int m){ PSeqStack pastack=(PSeqStack)malloc(sizeof (struct SeqStack)); if(pastack==NULL){ printf("out of spcae!\n"); return NULL; } pastack->s=(int * )malloc (sizeof (int)*m); if(pastack==NULL){ printf("out of space!\n"); return NULL; } pastack->MAXNUM=m; pastack->t=-1; return pastack; } /*****************************************************/ /* 推断堆栈是否为空 */ int isEmptyStack_seq(PSeqStack pastack){ if(pastack->t==(-1) ) return 1; return 0; } /*****************************************************/ /* 将x压入栈中,成功返回1,否则返回0; */ int push_seq(PSeqStack pastack,int x){ if(pastack->t >= pastack->MAXNUM){ printf("overflow!\n"); return 0; } pastack->t=pastack->t+1; pastack->s[pastack->t]=x; return 1; } /*****************************************************/ /* 将栈顶元素出栈,成功返回1,否则返回0; */ int pop_seq(PSeqStack pastack){ if(pastack->t==(-1)){ printf("empty stack!\n"); return 0; } pastack->t=(pastack->t)-1; return 1; } /*****************************************************/ /* 获取栈顶元素,成功返回栈顶元素,否则返回-1。 */ int top_seq(PSeqStack pastack){ if(pastack->t==(-1)){ printf("empty stack!\n"); return -1; } return pastack->s[pastack->t]; } /*****************************************************/ /********************主函数***************************/ int main(){ PSeqStack stack_get=createEmptyStack_seq(stack_max_num); push_seq(stack_get,0); push_seq(stack_get,1); push_seq(stack_get,2); push_seq(stack_get,3); pop_seq(stack_get); int from_top=top_seq(stack_get); printf("%d\n",from_top); return 0; }