数据结构之栈的顺序表实现

来源:互联网 发布:橡皮砖淘宝店铺 编辑:程序博客网 时间:2024/05/16 05:12


/*实现功能:用顺序表实现栈的各种操作编译环境: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;}


1 0
原创粉丝点击