最大堆的刪除

2021-10-04 21:26:08 字數 825 閱讀 3445

#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->elements[i]

=item;

}//堆的刪除

elementtype deletemax

(maxheap h)

maxitem=h->elements[1]

;//取出根節點最大值

//用最大堆中的最後乙個元素從根節點開始向上過濾下層節點

temp=h->elements[h->size--];

for(parents=

1;parent*

2<=h->size;parent=child)

if(temp>=h->elements[child]

)break

;else h->elements[parent]

=h->elements[child]

;//else目的->移動temp元素到下一層

} h->elements[parent]

=temp;

return maxitem;

}int

main()

最大堆插入及刪除

乙個最大堆類似一顆完全二叉樹,從上到下逐層遞減。向乙個最大堆插入資料時,先把數放在堆末尾,和其父母比較後放到合適位置,具體 為 while k 1 data k 2 data k 為新資料的位置從乙個最大堆中取出根節點時,先將根節點和尾子樹交換位置,然後刪除最後一位,對新換上的根節點進行迴圈判斷,先...

最大堆 插入和刪除操作

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

最小最大堆

include include include include define max size 100 define swap x,y,t t x x y y t typedef struct element element heap max size void min max insert ele...