栈为向下增长,为何计算栈容量为s->top - s->base
如题,堆栈中的栈是向下增长,地址是越增越小为何小甲鱼老师讲的栈与队列中,求栈容量为 s->stacksize = s->top - s->base;
而不是 s->stacksize = s->base - s->top;
求解?
还有一问,图中typedef struct 是否多余?
Node *LinkList; 直接这样定义结构体指针可否? 堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西 这件事你大概搞混了,这个和地址并没有什么关系。。
你要top和base想象成数组的下标,其实实际上也就是这么个意思
top和base初始值为零,每入栈一个,top+1,所以最好实际上栈的大小也就是 top - base。
楼上可能理解错你说的了。。 ba21 发表于 2018-4-4 22:05
堆是堆 :内存地址分配从小到大
栈是栈 :内存地址分配从大到小
2个不同的东西
是啊,栈地址分配由大到小,那么top应该是小喽 所以不应该是top减去base,应该反过来啊! Rocky0429 发表于 2018-4-5 22:15
这件事你大概搞混了,这个和地址并没有什么关系。。
你要top和base想象成数组的下标,其实实际上也就是 ...
我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分? eternity86 发表于 2018-4-6 09:32
我知道搞混了,只是我不理解,这里的栈和堆栈的栈,怎么区分?
在数据结构中我们虽然称呼为堆栈,其实更为准确的说法应该是“堆和栈”,这是两种数据结构,是数据按序排列
内存分配中则是栈区和堆区,栈区的方法和数据结构中的栈的操作类似,堆区则和数据结构中的堆是完全两种不同的概念。
Rocky0429 发表于 2018-4-6 11:11
在数据结构中我们虽然称呼为堆栈,其实更为准确的说法应该是“堆和栈”,这是两种数据结构,是数据按序排 ...
谢谢你的解答,就是数据结构和内存的区别了。
我的第二个问题,麻烦也帮我看下啊?
是不是typedef struct 多余了?
页:
[1]