#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...