“堆”和“堆”之间的关系是什么?
堆是一个树数据结构,树的高层总是包含比下层更大(或更小,如果设置的话)值。 “堆”是一个程序可用于动态分配的一堆免费RAM。 他们都被称为“堆”,但这与另一个有什么关系?
没什么,说实话。 我会想象堆字这个词只是随着它的每天(非技术)使用而被采用,并且将这两个概念分别应用于合理的类比。
在第一种情况下(树数据结构的含义),描述堆是最合适的,因为“较大”的对象放置在树中较高的位置(其中“较大”由任意键函数确定) - 也就是说,较小的物体(或较大的物体,取决于您如何看待它)。 这正是我如何解释它的; 谁首先将这个名字堆栈应用到这个数据结构中,他认为这在他的脑海中是一个恰当的名字,而且它只是被卡住了。
在第二种情况下(RAM块),堆的名称可能更为明显。 “堆”在这里是“大量任意顺序的集合”,这似乎也适用于动态分配内存块的常见用法。
无论如何,我不会担心你可以在这两个想法之间画出抽象的隐喻相似之处。 完全分开处理它们,在任何情况下都不会出错。
编辑:看起来基于树的数据结构可能已经从抽象代数的堆中取名,这在计算机科学中是相当普遍的。 但是,我不想确认或否认这一点...
查看这个网站,探索免费的内存存储的名称“堆”的起源。
他们都有相同的名字,就是这样。
“堆”永远不会被安排为实际的堆数据结构。
上一篇: What's the relationship between "a" heap and "the" heap?