1.最大堆的建立
typedef
struct heapstruct *maxheap;
struct heapstruct
;maxheap create
(int maxsize)
2.最大堆插入
void
insert
(maxheap h,elementtype item)
i==++h-
>size;
/*i指向插入後堆最後乙個元素的位置;*/
for(
;h->elements[i/2]
) h-
>element[i]
=h->elements[i/2]
;/*向下過濾結點*/
h->elements[i]
=item;
}
3.最大堆刪除
去除最大值元素,同時刪除堆的乙個結點
elementtypedeletemax
(maxheap h)
maxitem=h-
>elements[1]
;/*q取出根節點最大值*/
temp=h-
>elements[h-
>size--];
for(parent=
1;parent*
2<=h-
>size;parent=child;parent=child)
h->elements[parent]
=temp;
return maxitem;
}
4.最大堆的建立將n個元素按輸入順序存入,先滿足完全二叉樹的結構特性。
調整各節點的位置,以滿足最大堆的有序特性。
資料結構 堆
最大堆 最小堆 堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點...
資料結構 堆
資料結構 堆的操作和實現 當應用優先順序佇列或者進行堆排序時,一般利用堆來實現。堆是乙個完全 除最底層 外都是滿的 二叉樹,並滿足如下條件 1 根結點若有子樹,則子樹一定也是堆。2 根結點一定大於 或小於 子結點。因為要求堆必須是完全二叉樹,所以可以用線性的資料結構,比如陣列,來實現堆。利用陣列實現...
資料結構 堆
堆常用來實現優先佇列,在這種佇列中,待刪除的元素為優先順序最高 最低 的那個。在任何時候,任意優先元素都是可以插入到佇列中去的,是電腦科學中一類特殊的資料結構的統稱 最大 最小 堆是一棵每乙個節點的鍵值都不小於 大於 其孩子 如果存在 的鍵值的樹。大頂堆是一棵完全二叉樹,同時也是一棵最大樹。小頂堆是...