新手学习的疑惑
我是一个新手,刚刚学习<<数据结构>>,我看的是清华大学出版社 严蔚敏 吴伟民版的据说这是经典版,所以看的这个版本.
我现在学到栈,但对其中进栈那段代码有疑惑,具体如下
Status Push( SqStack S,SElemType &e ){
//插入元素e为新的栈顶元素
if ( S.top-S.base>=S.stacksize ) { //栈满,追加存储空间
S.base = ( SElemType * ) realloc (S.base,
(S.stacksize+SATACKINCREMENT) * sizeof(SElemType));
if(!S.base) exit(OVERFLOW);//存储失败
S.top=S.base+S.tacksize;
S.stacksize+= SATACKINCREMENT;
}
*S.top++=e;
return OK;
}
我看了这段压栈代码后,觉得S.top-S.base>=S.stacksize这一段有问题,因为根据C语言,
S.top-S.base在不上泄的情况下,它的最大值只能是S.tacksize-1,那S.top-S.base>=S.stacksiz这个为真,S.top由于*S.top++=e;就必然会指向在新建栈时所分配的那段连续地址以外的地址,我看了其他版本的数据结构,他们判断栈是否满的时候都是S.top和S.stacksize-1进行比较,所以究竟哪个对?我想严出的经典书不会错吧,但这样做不好吧!
请高手解释一下