关于数据结构栈一问题
Status Push(SqStack &S,SElemType e){
//插入新的元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize) {
/*栈满,追加储存空间 .提问在这里,什么情况下会有S.top-S.base>S.stacksize?入栈的时候不是已经避免了这种情况了吗?top 是指向栈顶元素的上一位。*/
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINREMENT)*sizeof(SElemType));
if(!S.base)exit(OVERFLOW); //储存分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINREMENT;
}
*S.top++=e;
return OK;
}//Push
[解决办法]
一般在初始化的时候就确定了栈的大小,在你不停的向栈中添加数据元素的时候,top指针始终指向栈顶,base指向栈底,初始化的时候top和base指向同一个地方,表示栈空。
[解决办法]
只是为了逻辑清晰,代码易读才这样写吧?即使永远不出现>的情况,这样写也没问题啊。