eternity86 发表于 2018-4-4 21:34:29

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

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

求解?

还有一问,图中typedef struct 是否多余?
Node *LinkList;   直接这样定义结构体指针可否?

ba21 发表于 2018-4-4 22:05:11

堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西

Rocky0429 发表于 2018-4-5 22:15:56

这件事你大概搞混了,这个和地址并没有什么关系。。

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

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

楼上可能理解错你说的了。。

eternity86 发表于 2018-4-6 09:29:51

ba21 发表于 2018-4-4 22:05
堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西

是啊,栈地址分配由大到小,那么top应该是小喽 所以不应该是top减去base,应该反过来啊!

eternity86 发表于 2018-4-6 09:32:28

Rocky0429 发表于 2018-4-5 22:15
这件事你大概搞混了,这个和地址并没有什么关系。。

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

我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分?

Rocky0429 发表于 2018-4-6 11:11:15

eternity86 发表于 2018-4-6 09:32
我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分?

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

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

eternity86 发表于 2018-4-6 12:51:21

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

谢谢你的解答,就是数据结构和内存的区别了。
我的第二个问题,麻烦也帮我看下啊?
是不是typedef struct 多余了?
页: [1]
查看完整版本: 栈为向下增长,为何计算栈容量为s->top - s->base