#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR 0
typedef struct{ int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack *s)
{
s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return OK;
}
void pop(sqstack *s,int *e)
{
if(s->top==s->base)return ERROR;
*e=*(--s->top);
}
void 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;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载