#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACK_CREMENT 10
typedef struct //定义顺序栈结构
{
int *top,*base;
int stacksize;
}sqstack;
sqstack_init(sqstack &q)
{
q.base=(int *)malloc(sizeof(int)*STACK_INIT_SIZE);
if(!q.base) exit(1);
q.top=q.base; //栈空
q.stacksize=STACK_INIT_SIZE;
}
sqstack_push(sqstack &q,int e)
{
if(q.top>=q.base+q.stacksize)//增加空间
{
q.base=(int *)realloc(q.base,(q.stacksize+STACK_CREMENT)*sizeof(int));
if(!q.base) exit(1);
q.top=q.base+q.stacksize;
q.stacksize+=STACK_CREMENT;
}
*q.top=e; //入栈关键语句。
q.top++;
}
int sqstack_pop(sqstack &q,int &e)
{
if(q.top==q.base) return 1;
q.top--;
e=*q.top;
return (e);
}