//建立乙個堆
void creatheap(heap *hp, int *array, int size)
hp->_capacity= size; //搬移
for (i; i< size; ++size)
hp->_size= size;
//找數的倒數第乙個非葉子結點
int last =((size - 2)>> 1); //最後乙個結點是size-1,雙親就是再減一除以2
for (; last>= 0; last--)
}int main()
; creatheap(&hp,a,sizeof (a)/sizeof(a[0]));
destroheap(&hp);
return 0;
}//銷毀堆
void destroheap(heap *hp)
adjustup(int *array,int size,int child)
else
return;
} }//插入乙個元素
void insertheap(heap *hp, int data)
//刪除乙個元素
void eraseheap(heap *hp)
//堆裡面有效元素的個數
int sizeheap(heap *hp)
//檢查堆是否為空
int emptyheap(heap *hp)
//獲取堆頂元素
int topheap(heap *hp)
//檢查是否進行擴容
void checkcapacity(heap *hp)
//搬元素
for (int i = 0;i < hp->_size;i++)
//釋放舊空間
free(hp->_array);
hp->_array= ptemp;
hp->_capacity= newcapacity;
}}
小頂堆及大頂堆的建立
首先明確堆是乙個完全二叉樹,小頂堆指根結點的值小於或等於左右子節點的值,大頂堆指根結點的值都大於或等於左右子節點的值 關於大小頂堆的建立更詳細的介紹 include include include include include include include include using names...
堆的實現(堆的建立及push pop元素)
堆資料結構是一種陣列物件,它可以被視為一棵完全二叉樹結構。堆結構的二叉樹儲存 大堆 每個父節點的都大於孩子節點 小堆 每個父節點的都小於孩子節點。建堆 由於堆被視為完全二叉樹,故在h 1層找到第乙個 從後往前找 非葉子結點,進行堆的下調 建大堆時,從下往上依次判斷並調整堆,使該結點的左右子樹都滿足大...
堆操作及應用
1.堆是乙個完全二叉樹,堆主要設計到的操作有插入,刪除,堆化。2.堆的主要應用有堆排序 從小到大排序,使用大頂堆 從大到小排序,使用小頂堆。3.下面以大頂堆為例,給出實現 view code 1 include 2 include 3 4using namespace std 56 大頂堆的實現 7...