#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
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(-1);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 1;
}
int Pop(sqstack &s,int &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
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(-1);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return 1;
}
int StackEmpty(sqstack s)
{
if(s.top==s.base)
return 0;
else
return 1;
}