//插入元素e为新的栈顶元素
//已修改
Status Push(SqStack &S, SElemType e)
{
if(S.top - S.base >= S.stacksize)//若栈满 S.stacksize为栈的长度
{
S.base = (SElemType*)realloc(S.base,
(S.stacksize + STACKINCREMENT)*sizeof(SElemType));
//追开空间 STACKINCREMENT是增开空间的长度
if(!S.base)
return OVERFLOW;
S.top = S.base + S.stacksize;//栈顶指针指向新的栈顶元素
S.stacksize +=
STACKINCREMENT;
}
*S.top++=e;//栈顶放数据后再增1,栈顶不放元素
return OK;
}
//删除S的栈顶元素,并用e返回其值
Status Pop(SqStack &S, SElemType &e)
{
if(S.top == S.base)
return ERROR;//判断栈是否为空
e = * --S.top;//这里定义的栈的栈顶不放元素,故栈顶指针减1
return OK;
}