1
hellov22ex 2014-07-04 10:52:34 +08:00 1
身为一个程序员,在寻找专业知识的时候,请不要去看百度百科,谢谢
堆是先进先出,栈是先进后出 楼下的,我说的对不对? |
2
hyq 2014-07-04 10:56:07 +08:00 1
@hellov22ex 必须对
|
3
hyq 2014-07-04 10:57:26 +08:00
@hellov22ex 好吧,我也错了,谁说堆是先进先出,尼玛那是队列啊!!!被你和楼主给误导了
|
4
maikcn 2014-07-04 10:59:09 +08:00 1
堆不就是栈?
堆栈 - Stack - LIFO(后进先出) 队列 - Queue - FIFO(先进先出) |
5
hyq 2014-07-04 11:00:26 +08:00
在计算机科学中,堆可以指:
一种树形数据结构,详见堆 (数据结构) http://zh.wikipedia.org/wiki/%E5%A0%86_(%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84) 用于动态内存分配的内存空间 维基上抄下来的 |
6
wy315700 2014-07-04 11:04:24 +08:00 1
堆
分为最大堆和最小堆 最大堆的意思是,每次取出的都是最大的一个数 最小堆意思类推 栈 先进后出 队列 先进先出 优先级队列 按照某个优先级出。 大部分系统里,堆是作为优先级队列的一个实现方法。 |
7
maikcn 2014-07-04 11:06:24 +08:00
好吧,原来堆是heap,被中文搞糊涂了 = =
|
8
Mutoo 2014-07-04 11:08:09 +08:00 1
堆栈(英语:stack),也可直接称栈。
http://zh.wikipedia.org/wiki/%E5%A0%86%E6%A0%88 你说的是队列(FIFO)/栈(FILO)的区别 另外在编译原理中,堆(heap)和栈(stack)有另外的解释 此外还有一个叫堆排序(大根堆、小根堆)的算法 |
9
johncang 2014-07-04 11:09:40 +08:00
我一直以为 V2EX 都是问些高大上的问题,原来还可以问这种问题
|
10
heliar 2014-07-04 11:17:07 +08:00
...其实是stack不是heap。。heap是另外个东西。。不知道为啥要翻译成堆栈。。是要和储存另一个栈的概念做区分么
|
11
lu18887 2014-07-04 11:17:17 +08:00 1
|
13
lu18887 2014-07-04 11:18:51 +08:00
这个问题,建议把一二楼踩下去,太容易误导小白了!
|
14
touzi 2014-07-04 11:20:04 +08:00
记得大一上课的时候老师画了个图,非常形象的理解了堆栈的区别.现在找大一笔记已经不见了.
|
15
em70 2014-07-04 11:21:35 +08:00 1
见过装羽毛球的球筒吧,一个原理
|
16
yakczh 2014-07-04 11:22:36 +08:00 1
做为一名程序员 在host中屏蔽百度才会有技术进步
找到hosts文件 win32 "C:\Windows\System32\drivers\etc\hosts" linux /etc/hosts 最前面写上一句 127.0.0.1 www.baidu.com |
17
tabris17 2014-07-04 11:25:24 +08:00 1
还是说英文吧, 栈是stack,堆是heap
stack一般指FILO访问内存 heap在不同语境下意义不同 |
18
ffffwh 2014-07-04 11:30:41 +08:00 1
初级阶段,堆请理解为能够动态被分配的内存。
它确实是用“堆”来实现的,不过你只要关心malloc/free就行... |
19
mikale 2014-07-04 11:32:21 +08:00
國內也把stack翻譯為堆棧。。不知道是怎麼回事
|
21
abscon 2014-07-04 11:46:13 +08:00 1
很简单的事情:
堆栈 == 栈 堆 != 栈 |
22
hellov22ex 2014-07-04 11:50:45 +08:00
|
23
soundbbg 2014-07-04 11:56:53 +08:00
.... stack queue heap ....
|
24
wy315700 2014-07-04 11:59:29 +08:00
@hellov22ex 教材没选好吧
|
25
hooluupog 2014-07-04 12:07:52 +08:00
后面的要点开始,堆:先进后出;
===================================== 如果你说的是数据结构中的堆的话,这种说法肯定是错的。 |
26
xylophone21 2014-07-04 12:22:00 +08:00
只能说"堆栈"这个翻译太糟糕了. BTW,好像没有正式一点的文档用"堆栈"这个词吧?
|
27
keyanzhang 2014-07-04 12:25:13 +08:00 via iPhone 1
Stack 的意思呢就是你吃完東西吐了,最後吃的那個會被最先吐出來;Queue 的意思就是你拉肚子了……
|
28
semicircle21 2014-07-04 12:29:07 +08:00
@keyanzhang
那Heap呢? 画面太美, 不敢想象啊.. |
29
hellov22ex 2014-07-04 12:29:36 +08:00
@wy315700 不清楚在哪里得到的这个错误的知识。。
|
30
railgun 2014-07-04 12:31:34 +08:00
堆和栈是不同的东西……
|
31
canautumn 2014-07-04 12:34:56 +08:00
堆栈(英语:stack),也可直接称栈。中国大陆作堆栈,台湾作堆叠 ——wikipedia
|
33
loryyang 2014-07-04 13:20:40 +08:00 1
中文这几个词比较复杂,称呼的不同,可以直接用stack和heap来表示,stack就是先进后出,heap不讲先后的,他是按照规律排序的,每次把排在最前面的哥们踢掉。另外程序语言会使用堆栈来表示内存分配的空间,比如Java内存分配中,堆和栈是不一样的分配方式
|
34
tsingyi 2014-07-04 13:30:52 +08:00
这里的堆栈是指的程序运行的内存空间,一个栈内存,一个堆内存。和数据结构所说的栈的堆有不同的含义。
http://www.ruanyifeng.com/blog/2013/11/stack.html |
35
se77en 2014-07-04 13:42:55 +08:00 3
楼上的各位:shut the fuck up
一图胜千言: 外加文字说明: 栈 这是存储器用来保存局部变量的部分。每当调用函数,函数的所有局部变量都在栈上创建。它之所以叫栈是因为它看起来就像堆积而成的栈板:当进入函数时,变量会放到栈顶;离开函数时,把变量从栈顶拿走。奇怪的是,栈做起事来颠三倒四,它从存储器的顶部开始,向下增长。 堆 我们还没有用过这部分的存储器,堆用于动态存储:程序在运行时创建一些数据,然后使用很长一段时间,稍后会看到堆的用法。 全局量 全局量位于所有函数之外,并对所有函数可见。程序一开始运行时就会创建全局量,你可以修改它们。 常量 常量也在程序一开始运行时创建,但它们保存在只读存储器中。常量是一些在程序中要用到的不变量,你不会想修改它们的值,例如字符串字面值。 代码 最后是代码段,很多操作系统都把代码放在存储器地址的低位。代码段也是只读的,它是存储器中用来加载机器代码的部分。 |
37
xiaowangge 2014-07-04 13:58:51 +08:00 1
|
38
lu18887 2014-07-04 14:21:55 +08:00
@se77en you are talking about memory layout , the poster is talking about data structures.
|
40
shoumu 2014-07-04 14:46:48 +08:00 1
这在混淆概念啊
数据结构里面里的堆栈和程序运行时使用的堆栈就不是一个概念。楼主你到底问哪个? |
41
S1ahs3r 2014-07-04 14:59:57 +08:00
内存中堆栈跟数据结构堆栈不太一样的,这个就算百度也能百度出结果
|
42
83f420984 OP @shoumu 我起初是在《JavaScript高级程序设计》里面看到'杙方法',然后搜索这个叫做'杙方法',就找到了百度百科的解释,所以才有了我的问题。
|
43
dadou 2014-07-04 16:57:00 +08:00
中文里,堆是堆,栈是栈,堆栈是栈。
|
44
yuankui 2014-07-04 18:02:36 +08:00 1
请不要把堆栈中的堆和栈分开好伐?
堆栈=stack 你说的先进先出应该是队列queue 堆是一种内存管理方式,没有先进先出,先进后出这一说,而且支持随机读写的。 |
45
krafttuc 2014-07-04 18:08:23 +08:00
「堆栈」这个词竟然这么流行!我觉得堆是堆,栈是栈。两个字放一起就有一股弄弄的乡土气息。即使楼上解释说「堆栈」指「栈」,还是无法接受啊。。。摔!
|
46
aisk 2014-07-04 18:18:29 +08:00
我去……我还以点错进了博客园
|
47
yukirock 2014-07-04 20:49:55 +08:00 2
從拓撲結構來說,堆是二叉樹,其中子節點的值恆小於母節點(極大堆),或反之(極小堆)。插入及取出值時會涉及堆旋轉操作,目的是滿足堆的性質。也可以直接用數組下標模 2 來表示堆的位置,Heapsort 就是這麼做的。
中文維基把 Heap 引導到 Priority Queue 是錯誤的。有用 Heap 實現 PQ 的,但就概念而言,二者不等同。 |