Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

数据结构“堆”就是一“坨”

  有一个很经典的蛋疼问题“堆与栈什么区别?”,这个问题在问什么?堆与栈都有两种含义,一种是数据结构上的,另一种是内存访问方式上的。它到底是在问什么呢?如果是在数据结构课堂这样的氛围中当然知道是在问什么,但是没有一个氛围谁知道是在问啥呢?
  数据结构中的有什么共同点吗?完全是两回事吧,除了他们都是一种数据结构以外没有任何共同点吧,那问区别不是蛋疼吗?就像我突然问“社会主义计划经济和豆腐有什么区别?”这让人怎么回答?但是再看内存访问方式的,他们的共同点都是提供程序访问的内存,不同点是堆是自己分配自己回收的,栈是自动分配自动回收的(等等等,一系列异同性质,这里不列举了)。总之它们有很明确的有共同和异同。所以如果突然问“堆与栈什么区别?”我想我会理解到内存访问方式这边,而不是数据结构上。这完全是在玩文字游戏,欺负汉语对这个翻译的不好是不是!?
  关于数据结构的堆,其实我个人认为翻译成“坨”更准确。它就是一坨嘛!   根据性质:它是一棵完全树,看着这多么完整的一坨,还是树形的,难道不是完全树吗;然后从根到叶是从小到大(或从大到小)的,再看这一坨上细下粗就明白了。它完全符合概念!所以,数据结构的堆,就是一坨!
  在数据结构的方面,堆和栈完全没有可比性,甚至栈和树都没什么可比性!非要对比只能说一个是线性的一个树树状的,仅此而已。也许有人会觉得“堆没有栈那先入后出的性质这就是它们的区别”。这么理解就出大问题了,得拿它们的共同方面来做对比!否则就相当于拿蛋炒饭和JavaScript做比较,然后说“JavaScript可以用匿名函数就是区别”。好歹也拿个同类的东西做比较再说这么专业的话啊,要不然蛋炒饭炒出个不匿名的函数给我看看!
  在数据结构中,比起普通的树和栈,堆用的并不多,只是它的名字和栈扯上了关系让它狐假虎威了下,实际上堆就是一坨
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^