鱼C论坛

 找回密码
 立即注册
查看: 5872|回复: 6

栈为向下增长,为何计算栈容量为s->top - s->base

[复制链接]
发表于 2018-4-4 21:34:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,堆栈中的栈是向下增长,地址是越增越小
为何小甲鱼老师讲的栈与队列中,求栈容量为 s->stacksize = s->top - s->base;
而不是 s->stacksize = s->base - s->top;

求解?

还有一问,图中typedef struct 是否多余?
Node *LinkList;     直接这样定义结构体指针可否?
QQ图片20180404213039.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-4 22:05:11 | 显示全部楼层
堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 22:15:56 | 显示全部楼层
这件事你大概搞混了,这个和地址并没有什么关系。。

你要top和base想象成数组的下标,其实实际上也就是这么个意思

top和base初始值为零,每入栈一个,top+1,所以最好实际上栈的大小也就是 top - base。

楼上可能理解错你说的了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 09:29:51 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-4-4 22:05
堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西

是啊,栈地址分配由大到小,那么top应该是小喽 所以不应该是top减去base,应该反过来啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 09:32:28 From FishC Mobile | 显示全部楼层
Rocky0429 发表于 2018-4-5 22:15
这件事你大概搞混了,这个和地址并没有什么关系。。

你要top和base想象成数组的下标,其实实际上也就是 ...

我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-6 11:11:15 | 显示全部楼层
eternity86 发表于 2018-4-6 09:32
我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分?

在数据结构中我们虽然称呼为堆栈,其实更为准确的说法应该是“堆和栈”,这是两种数据结构,是数据按序排列

内存分配中则是栈区和堆区,栈区的方法和数据结构中的栈的操作类似,堆区则和数据结构中的堆是完全两种不同的概念。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-4-6 12:51:21 | 显示全部楼层
Rocky0429 发表于 2018-4-6 11:11
在数据结构中我们虽然称呼为堆栈,其实更为准确的说法应该是“堆和栈”,这是两种数据结构,是数据按序排 ...

谢谢你的解答,就是数据结构和内存的区别了。
我的第二个问题,麻烦也帮我看下啊?
是不是typedef struct 多余了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表