(英語: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