| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1349 人关注过本帖
标题:新手学习的疑惑
取消只看楼主 加入收藏
jsfserver
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-19
收藏
 问题点数:0 回复次数:1 
新手学习的疑惑
我是一个新手,刚刚学习<<数据结构>>,我看的是清华大学出版社 严蔚敏 吴伟民版的
据说这是经典版,所以看的这个版本.
我现在学到栈,但对其中进栈那段代码有疑惑,具体如下
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进行比较,所以究竟哪个对?我想严出的经典书不会错吧,但这样做不好吧!
请高手解释一下
搜索更多相关主题的帖子: 学习 
2005-11-19 12:28
jsfserver
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-19
收藏
得分:0 
S.top-S.base在不上泄的情况下,它的最大值只能是S.tacksize-1,那
S.top-S.base>=S.stacksiz这个为真
我看错了,是应该为假
我的疑惑是:将一个指针移到一个不是刚开始连续分配的一个地址上,这样做法好吗?
就是假设栈的空间为10,那栈满的时候,栈顶指针指向刚开始连续分配的第10个地址后面的那个地址上,那样栈顶指针不在连续分配的地址上,还能直接进行指针减运算吗?
2005-11-19 19:44
快速回复:新手学习的疑惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011494 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved