模板 二叉堆 優先佇列的二叉堆陣列實現

2021-08-07 04:02:53 字數 1087 閱讀 2560

最近開始學資料結構,一直無心更新部落格,今天結束集訓,晚上打算碼一下最近的進度。

/*

* 建立乙個最大容量為maxsize的int型堆:maxheapque(maxsize);

* 預設最大容量為1007:maxheapque;

* * 作為優先佇列:

* pop(); 同優先佇列pop(),如果佇列已為空還要執行pop,就會執行死迴圈以報錯。

* push(); 同優先佇列push(),如果佇列已滿,就會執行死迴圈以報錯。

* top(); 同優先佇列top()

* empty(); 同優先佇列empty()

* * 支援結構體,需要過載小於號(<)。

* 其它自帶型別資料可以呼叫functional裡的庫函式:

* #include * maxheap> que; //最小化堆

* maxheapq; 等價於 maxheap> q; //最大化堆

*/template

class maxheap

if (!cmp(tmp, heap[cur])) break;//調整結束

heap[index] = heap[cur];

index = cur;

cur <<= 1;

}heap[index] = tmp;

}void filterup(int start)

heap[cur] = tmp;

}int getindex(t data)

bool remove(t data)

void print()

public:

maxheap(t *tmp, int len, int capactity)

maxheap(int capactity = 1007)

~maxheap()

void pop()

t top()

bool empty()

bool push(t data)

};

優先佇列 二叉堆

優先佇列 二叉堆 二叉堆是一棵完全二叉樹,最大堆 最小堆 中,所有根節點的鍵值都要比對應的子樹要大 小 由於是完全二叉樹,所以儲存結構可以採用陣列。最大堆的建立 include include include include include include define inf 0x3f3f3f3f...

二叉堆 優先佇列

堆 堆常見的二叉堆,這種資料結構有大根堆和小根堆。對於大根堆來說,每個父節點是大於他的兩個孩子節點的。也就是最大值在根節點。小根堆與之相反。如果堆用陣列實現的話,如果從1開始計數 因為0的位置可以在上慮或者下慮的時候做個暫存的位置 那麼乙個孩子的父節點是i 2 如果知道了父節點,而左孩子的節點位置為...

二叉堆(優先佇列)

0.1 本文總結於 資料結構與演算法分析,但源 均為原創 旨在理清二叉堆 優先佇列 堆的其他操作及其應用,以便讓朋友些知道為什麼要學習優先佇列 二叉堆 1.0 優先佇列定義 優先佇列是允許至少下列兩種操作的資料結構,insert 插入 它的工作時顯而易見的,以及 deletemin 刪除最小者 它的...