顺序栈的实现C的实现
来源:百度知道 编辑:UC知道 时间:2024/06/05 11:25:15
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -2
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
int InitStack(sqstack s){
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base) exit(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 1;
}
int Push(sqstack *s,int e){
if((*s).top-(*s).base>=(*s).stacksize){
(*s).base=(int *)realloc((*s).base,((*s).stacksize+STACKINCREMENT)*sizeof(int));
if(!(*s).base) exit(OVERFLOW);
(*s).top=(*s).base+(*s).stacksize;
(*s).stacksize+=STACKINCREMENT;
}
*(*s).top++=e;
return 1;
}
int Pop(sqstack *s,int e){
if((*s).top==(*s).base) return 0;
e=*(--(*s).top);
return 1;
}
int GetTop(