Status Push(SqStack &S,SElemType e)
{
if(S.top-S.base>=S.stacksize){
S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) exit(-1);
S.top=S.base+S.stacksize;
S.stacksize+=STACKCRMENT;
}
*S.top++;=e;
return OK;
}
这是个插入新元素的函数,若栈已满,S.top此时指着最后一个进栈的元素的后一个地址,S.base指着第一个进栈元素,执行完S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType))这句语句后,是从S.base开始申请STACK_INIT_SIZE 个空间,还是从S.top开始申请STACK_INIT_SIZE 个空间,不可能是前者啊,因为那些空间都被用来放进栈元素了,那如果是后者,不是应该这个写吗:S.top=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType))?求解!