(英语:heap)亦被称为: 优先队列 (英语:priority queue),是计算机科学中一类特殊的数据结构的统称。堆一般是一个能够被看作一棵树的数组对象。在队列中,调度程序反复提取队列中第一个做业并运行,于是实际状况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具备重要性的做业,一样应当具备优先权。堆即为解决此类问题设计的一种数据结构。数组
n个元素序列{k1,k2...ki...kn},当且仅当知足下列关系时称之为堆:
(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2)
数据结构
堆的实现经过构造二叉堆(binary heap),实为二叉树的一种;因为其应用的广泛性,当不加限定时,均指该数据结构的这种实现。这种数据结构具备如下 性 质。 任意节点小于它的全部后裔,最小元在堆的根上(堆序性)。堆老是一棵彻底树。将根节点最大的堆叫作最大堆或大根堆,根节点最小的堆叫作最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。spa
(英语:stack),也可直接称栈。在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能容许在链结串行或阵列的一端(称为堆栈顶端指标,英语:top)进行加入资料(英语:push)和输出资料(英语:pop)的运算。
设计
因为堆栈数据结构只容许在一端进行操做,于是按照后进先出(LIFO, Last In First Out)的原理运做。
堆栈数据结构使用两种基本操做:推入(push)和弹出(pop):
推入:将数据放入堆栈的顶端(阵列形式或串行形式),堆栈顶端top指标加一。
弹出:将顶端数据资料输出(回传),堆栈顶端资料减一。 orm