最大堆為完全二叉樹,採用陣列存放資料,父節點的值永遠比左右孩子大,但兄弟之間值的大小並不確定。
heap.h:
#ifndef heap_h_included
#define heap_h_included
#includeusing namespace std;
int const max = 20;
templateclass maxheap
print();
init(); //初始化最大堆
}void init()}}
int adjust(int j)
return -1;
}bool isleaf(int index)
void print()
}void del(t item)
--num;
comptree[index] = comptree[num]; //用尾結點的值替換當前結點
while(index <= (num - 2) / 2)
}};#endif // heap_h_included
主函式測試 main.cpp:
#include"heap.h"
int main()
; maxheapheap(arr, 10);
heap.print();
heap.insert(100);
heap.print();
heap.del(80);
heap.print();
return 0;
}
最大堆 插入和刪除操作
最大堆是一棵完全二叉樹,也是一棵最大樹 即對於每個結點,其關鍵字的值不小於兒子結點的關鍵字值 一.堆的儲存結構 typedef struct element element heap max elements intn 0 二.在堆中插入元素 void element copy element ps...
最大堆插入及刪除
乙個最大堆類似一顆完全二叉樹,從上到下逐層遞減。向乙個最大堆插入資料時,先把數放在堆末尾,和其父母比較後放到合適位置,具體 為 while k 1 data k 2 data k 為新資料的位置從乙個最大堆中取出根節點時,先將根節點和尾子樹交換位置,然後刪除最後一位,對新換上的根節點進行迴圈判斷,先...
順序表的初始化 刪除 插入
初始化線性表 include include include define list init size 100 define listincrement 10 define ok 1 define error 0 define overflow 2 struct sqlist char elem ...