顺序栈的实现
顺序栈的实现
#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); } }