堆和栈的区别,堆和堆栈的区别( 三 )


?
2.7小结:
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭 , 只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小 。
使用堆就象是自己动手做喜欢吃的菜肴 , 比较麻烦,但是比较符合自己的口味,而且自由度大 。
堆和栈的区别主要分:
操作系统方面的堆和栈,如上面说的那些,不多说了 。
还有就是数据结构方面的堆和栈,这些都是不同的概念 。这里的堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权;栈实际上就是满足先进后出的性质的数学或数据结构 。
虽然堆栈 , 堆栈的说法是连起来叫 , 但是他们还是有很大区别的,连着叫只是由于历史的原因 。
是数据结构的知识
堆通常用来排序即“堆排序”
堆排序是指利用堆(heaps)这种数据结构来构造的一种排序算法 。堆是一个近似完全二叉树结构,并同时满足堆属性:即父节点的键值或索引总是大于(大头堆)或者小于(小头堆)任何一个子节点 。通常升序建大头堆降序建小头堆 , 一般用数组表示 。具体算法可参阅相关数据结构的书籍 。
堆栈也是一种数据结构
线形表是具有n个元素的有限序列,而堆栈是限定仅在表尾进行插入或删除操作的线形表 , 因此,对堆栈来说表尾称为栈顶,相应的表头称为栈底,由于只能在表尾进行插入或删除操作 , 所以堆栈遵循先进后出的原则即先进入堆栈的元素要在后进去的元素出栈之后才能出栈
堆栈可以用数组表示也可以用链表来表示(链栈) , 两种表示方法各有优劣 , 要是用途而定 。
栈一般是保存的程序的可执行代码,一些常量等数据
堆保存的是一些临时的数据,如函数的参数,返回值,临时申请的内存等.
堆是二叉树,堆栈是线性表 。

堆和栈的区别,堆和堆栈的区别

文章插图
2、堆和栈有什么区别堆和栈的区别主要有五大点,分别是:
1、
申请方式的不同 。栈由系统自动分配,而堆是人为申请开辟;
2、
申请大小的不同 。栈获得的空间较小,而堆获得的空间较大;
3、
申请效率的不同 。栈由系统自动分配,速度较快,而堆一般速度比较慢;
4、
存储内容的不同 。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的 。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;