#include<stdio.h>
#include<malloc.h>
#define initsize 10
#define sizetoo 10
#define overflow -2
#define flag 0
typedef int elemtype;
typedef int status;
typedef struct{
elemtype *top,*base;
int stacksize;
}Sqstack;
status initsqstack(Sqstack &S){//初始化
S.base =(elemtype*)malloc(sizeof(elemtype)*initsize);
if(!S.base ) return(overflow);
S.top =S.base;
S.stacksize=initsize;
return 1;
}
status stack_empty(Sqstack S){//判空
if(S.base ==S.top ) return 1;
else return 0;
}
status push(Sqstack &S,elemtype e){ //入栈
if(S.top -S.base >=S.stacksize ) {
S.base =(elemtype*)realloc(S.base,sizeof(elemtype)*(S.stacksize +sizetoo));
if(!S.base ) return(overflow);
S.top =S.base +S.stacksize ;
S.stacksize =S.stacksize +sizetoo;
}
*S.top++=e;
return 1;
}
status pop(Sqstack &S,elemtype &e){
if(S.base==S.top) return 0;
S.top--;e=*S.top;
return 1;
}
elemtype getstack(Sqstack S){
int e;
if(S.base==S.top) return 0;
e=*(S.top-1);
return e;
}
int main(){
int e=2,tem;
Sqstack S;
tem=initsqstack(S);if(tem==1) printf("初始化完成");
tem=stack_empty(S);if(tem==1) printf("栈为空");
push(S,e);
pop(S,e);
e=getstack(S);
}
栈C语言/
最新推荐文章于 2024-07-25 14:57:29 发布