《最小-最大堆的插入程序》由会员分享,可在线阅读,更多相关《最小-最大堆的插入程序(3页珍藏版)》请在金锄头文库上搜索。
1、最小-最大堆的插入#include #include #define MAXSIZE 1000struct element int key;element heapMAXSIZE;bool level(int i)double k = log(i)/log(2);if(int)k%2 =0) return true;else return false;void max_verify(element heap, int n, element item)int i = n;int parent = n/4;while(parent) if(heapparent.key item.key) heap
2、i = heapparent;i = parent;parent = parent/4; else break;heapi = item;void insert(element heap, int *n, element item)(*n)+;if(*n = MAXSIZE) printf(heap is fulln);exit(1);if(*n = 1) heap*n.key = item.key;return;int parent = *n/2;switch(level(parent) case MIN:if(heapparent.key item.key) heap*n = heappa
3、rent;min_verify(heap, parent, item); else max_verify(heap, *n, item);break;case MAX:if(heapparent.key item.key) heap*n = heapparent;max_verify(heap, parent, item); else min_verify(heap, *n, item);break;int main()int n = 0;for(int i=1; i=10; +i) element item;item.key = i;insert(heap, &n, item); del_min(heap, &n);for(int i=1; i=n; +i) printf(%d , heapi.key);printf(n);return 0;