最大堆是一棵完全二叉樹,也是一棵最大樹(即對於每個結點,其關鍵字的值不小於兒子結點的關鍵字值)。
一.堆的儲存結構
typedef struct element;
element
heap[max_elements];
intn=0;
二.在堆中插入元素
void
element_copy( element *ps, element *pd )
void
insert_max_heap( element *pitem )
i = ++(n);
while( (i!=1) && ( pitem->key > heap[i/2].key ) )
element_copy( pitem, heap+i );
}三.在堆中刪除元素
element *
delete_max_heap( )
element_copy( heap+1, &item );
element_copy( heap+n, &temp );
n--;
parent = 1;
child = 2;
while( child <= n )
element_copy( &temp, heap+parent );
return &item;
}
最大堆插入及刪除
乙個最大堆類似一顆完全二叉樹,從上到下逐層遞減。向乙個最大堆插入資料時,先把數放在堆末尾,和其父母比較後放到合適位置,具體 為 while k 1 data k 2 data k 為新資料的位置從乙個最大堆中取出根節點時,先將根節點和尾子樹交換位置,然後刪除最後一位,對新換上的根節點進行迴圈判斷,先...
最大堆的初始化 插入和刪除
最大堆為完全二叉樹,採用陣列存放資料,父節點的值永遠比左右孩子大,但兄弟之間值的大小並不確定。heap.h ifndef heap h included define heap h included includeusing namespace std int const max 20 templa...
最大堆的刪除
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...