顺序栈的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺序栈的实现
#include
#include
#define STACKSIZE 100
#define zhuijia 100
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack & s){
s.base=(int*)malloc(STACKSIZE*sizeof(int));
if(!s.base)
printf("Allocate space failure !");
s.top=s.base;
s.stacksize=STACKSIZE;
}
int push(sqstack &s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int*)realloc(s.base,(s.stacksize+zhuijia)*sizeof(int));
if(!s.base)
printf("Allocate space failure !");
s.top=s.base+s.stacksize;
s.stacksize+=zhuijia;
}
*s.top++=e;
}
int pop(sqstack &s,int &e){
if(s.base==s.top)
return 0;
e=*--s.top;
}
int main(){
sqstack s;
int n,e,i;
if(initstack(s))
printf("success! the stack has been creatted !\n");
printf("请输入进栈元素的个数:\n");
scanf("%d",&n);
printf("请输入进栈元素:\n");
for(i=0;i scanf("%d",&e); push(s,e); } printf("出栈元素序列:\n"); for(i=0;i pop(s,e); printf("%d\n",e); } }