关于堆栈解释

2014-07-04 10:46:14 +08:00
 83f420984
百度百科解释堆栈:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,列队优先,先进后出;栈,后进先出

可能我理解的不对,不对的地方请指点,后面的要点开始,堆:先进后出;栈:后进先出,既然堆是先进后出,而又说栈是后进先出,那如何实现先进后出后进先出?有没有岐义?
7574 次点击
所在节点    程序员
47 条回复
abscon
2014-07-04 11:46:13 +08:00
很简单的事情:

堆栈 == 栈
堆 != 栈
hellov22ex
2014-07-04 11:50:45 +08:00
@lu18887 感谢
@hyq 我也不知道我被什么误导了,,,
soundbbg
2014-07-04 11:56:53 +08:00
.... stack queue heap ....
wy315700
2014-07-04 11:59:29 +08:00
@hellov22ex 教材没选好吧
hooluupog
2014-07-04 12:07:52 +08:00
后面的要点开始,堆:先进后出;
=====================================
如果你说的是数据结构中的堆的话,这种说法肯定是错的。
xylophone21
2014-07-04 12:22:00 +08:00
只能说"堆栈"这个翻译太糟糕了. BTW,好像没有正式一点的文档用"堆栈"这个词吧?
keyanzhang
2014-07-04 12:25:13 +08:00
Stack 的意思呢就是你吃完東西吐了,最後吃的那個會被最先吐出來;Queue 的意思就是你拉肚子了……
semicircle21
2014-07-04 12:29:07 +08:00
@keyanzhang
那Heap呢? 画面太美, 不敢想象啊..
hellov22ex
2014-07-04 12:29:36 +08:00
@wy315700 不清楚在哪里得到的这个错误的知识。。
railgun
2014-07-04 12:31:34 +08:00
堆和栈是不同的东西……
canautumn
2014-07-04 12:34:56 +08:00
堆栈(英语:stack),也可直接称栈。中国大陆作堆栈,台湾作堆叠 ——wikipedia
lu18887
2014-07-04 12:41:13 +08:00
@yakczh 太能黑了!哈哈
loryyang
2014-07-04 13:20:40 +08:00
中文这几个词比较复杂,称呼的不同,可以直接用stack和heap来表示,stack就是先进后出,heap不讲先后的,他是按照规律排序的,每次把排在最前面的哥们踢掉。另外程序语言会使用堆栈来表示内存分配的空间,比如Java内存分配中,堆和栈是不一样的分配方式
tsingyi
2014-07-04 13:30:52 +08:00
这里的堆栈是指的程序运行的内存空间,一个栈内存,一个堆内存。和数据结构所说的栈的堆有不同的含义。
http://www.ruanyifeng.com/blog/2013/11/stack.html
se77en
2014-07-04 13:42:55 +08:00
楼上的各位:shut the fuck up
一图胜千言:


外加文字说明:


这是存储器用来保存局部变量的部分。每当调用函数,函数的所有局部变量都在栈上创建。它之所以叫栈是因为它看起来就像堆积而成的栈板:当进入函数时,变量会放到栈顶;离开函数时,把变量从栈顶拿走。奇怪的是,栈做起事来颠三倒四,它从存储器的顶部开始,向下增长。



我们还没有用过这部分的存储器,堆用于动态存储:程序在运行时创建一些数据,然后使用很长一段时间,稍后会看到堆的用法。

全局量

全局量位于所有函数之外,并对所有函数可见。程序一开始运行时就会创建全局量,你可以修改它们。

常量

常量也在程序一开始运行时创建,但它们保存在只读存储器中。常量是一些在程序中要用到的不变量,你不会想修改它们的值,例如字符串字面值。

代码

最后是代码段,很多操作系统都把代码放在存储器地址的低位。代码段也是只读的,它是存储器中用来加载机器代码的部分。
se77en
2014-07-04 13:44:26 +08:00
@se77en 摘自 《Head First C》
xiaowangge
2014-07-04 13:58:51 +08:00
阮一峰:《Stack的三种含义》

http://www.ruanyifeng.com/blog/2013/11/stack.html
lu18887
2014-07-04 14:21:55 +08:00
@se77en you are talking about memory layout , the poster is talking about data structures.
se77en
2014-07-04 14:42:08 +08:00
@lu18887 数据结构来说的话,堆栈就是栈
shoumu
2014-07-04 14:46:48 +08:00
这在混淆概念啊
数据结构里面里的堆栈和程序运行时使用的堆栈就不是一个概念。楼主你到底问哪个?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX