最大堆插入及刪除

2021-09-27 09:39:06 字數 399 閱讀 3223

乙個最大堆類似一顆完全二叉樹,從上到下逐層遞減。

向乙個最大堆插入資料時,先把數放在堆末尾,和其父母比較後放到合適位置,具體**為:

while

(k>

1&data[k/2]

)

data[k]為新資料的位置
從乙個最大堆中取出根節點時,先將根節點和尾子樹交換位置,然後刪除最後一位,對新換上的根節點進行迴圈判斷,先判斷是否有左子樹,如果有,將它的值賦給乙個數j,然後判斷是否有右子樹,且是否大於左子樹,如果兩者都符合,將右子樹的值賦給j,最後比較根節點和data[j]的值。具體**如下:

while(2

*k<=count)

最大堆 插入和刪除操作

最大堆是一棵完全二叉樹,也是一棵最大樹 即對於每個結點,其關鍵字的值不小於兒子結點的關鍵字值 一.堆的儲存結構 typedef struct element element heap max elements intn 0 二.在堆中插入元素 void element copy element ps...

最大堆的刪除

include include typedef struct heapstruct maxheap maxheap create int maxsize 堆的插入 void insert maxheap h,elementtype item i h size for h elements i 2 h...

最大堆的初始化 插入和刪除

最大堆為完全二叉樹,採用陣列存放資料,父節點的值永遠比左右孩子大,但兄弟之間值的大小並不確定。heap.h ifndef heap h included define heap h included includeusing namespace std int const max 20 templa...