C语言实现栈
typedef struct
{
int *base;
int *top;
int stackSize;
}sqStack;
int initStack(sqStack &s)
{
s.base=(int *)malloc(sizeof(sqStack)*STACK_INIT_SIZE);
if (!s.base)
{
exit(OVERFLOW);
}
s.top=s.base;
s.stackSize=STACK_INIT_SIZE;
return OK;
}
int getTop(sqStack &s,int &data)
{
if (s.top==s.base)
{
return ERROR;
}
data=*(s.top-1);
return OK;
}
int push(sqStack &s,int data)
{
if (s.top-s.base>=s.stackSize)
{
s.base=(int *)realloc(s.base,sizeof(sqStack)*STACK_INIT_SIZE+STACK_INCREMENT);
if (!s.base)
{
exit(OVERFLOW);
}
s.top=s.base+s.stackSize;
s.stackSize+=STACK_INIT_SIZE;
}
*(s.top++)=data;
return OK;
}
int pop(sqStack &s,int &data)
{
if (s.base==s.top)
{
return ERROR;
}
data=*--s.top;
return OK;
}