为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大侠能解释一下什么是堆?什么又是栈呢?

哪位大侠能解释一下什么是堆?什么又是栈呢?

C++ C
翻阅古今 2022-08-11 11:07:26
VC编程中有下面一句话:对话框对象是用new操作符在堆上创建的,而不是以变量的形式创建。
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

堆是计算机科学中的一种特别的树状数据结构,堆总是一棵完全二叉树,它总是满足下列性质:

堆中某个节点的值总是不大于或不小于其父节点的值;

堆总是一棵完全二叉树。

堆的特征就是:给定堆中任意节点P和C,若P是C的母节点,那么P的值会小于等于(或大于等于) C 的值”。若母节点的值恒小于等于子节点的值,此堆称为最小堆;反之,若母节点的值恒大于等于子节点的值,此堆称为最大堆。

栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;

扩展资料:

堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。它也是在应用程序运行的时候请求操作系统分配给自己内存,一般是申请/给予的过程。

堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。

(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2)

若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的值均不大于(或不小于)其左、右孩子结点的值。由此,若序列{k1,k2,…,kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。

栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。


查看完整回答
反对 回复 2022-08-15
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

1、堆是计算机科学中的一种特别的树状数据结构。

若是满足以下特性,即可称为堆:“给定堆中任意节点 P 和 C,若 P 是 C 的母节点,那么 P 的值会小于等于(或大于等于) C 的值”。若母节点的值恒小于等于子节点的值,此堆称为最小堆;反之,若母节点的值恒大于等于子节点的值,此堆称为最大堆。在堆中最顶端的那一个节点,称作根节点,根节点本身没有母节点。

2、栈是计算机科学中一种特殊的串列形式的抽象数据类型,其特殊之处在于只能允许在链表或数组的一端进行加入数据(英语:push)和输出数据(英语:pop)的运算。另外堆栈也可以用一维数组或链表的形式来完成。堆栈的另外一个相对的操作方式称为队列。

由于堆栈数据结构只允许在一端进行操作,因而按照后进先出的原理运作。

扩展资料:

堆的实现通过构造二叉堆(binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。

堆总是一棵完全树。即除了最底层,其他层的节点都被元素填满,且最底层尽可能地从左到右填入。

堆栈的基本特点:先入后出,后入先出。除头尾节点之外,每个元素有一个前驱,一个后继。


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号