#include
#include
typedef
struct heapstruct *pheap;
//pheap為結構指標,指向這個結構
struct heapstruct
;typedef pheap maxheap;
typedef pheap minheap;
#define maxdata 1000
#define error -999
maxheap createheap
(int maxsize)
bool isfull
(maxheap heap)
bool isempty
(maxheap heap)
bool insert
(maxheap heap,
int item)
i =++heap->size;
for(
; heap->data[i /2]
< item;i/=2
) heap->data[i]
= item;
return true;}/*
@program 思想為將根節點的元素刪除,將最後乙個元素設定為temp
@program 通過迴圈為temp找到合適的位置插入其中
*/int
deletemax
(maxheap heap)
maxitem = heap->data[1]
; temp = heap->data[heap->size--];
for(parent =
1; parent *
2<= heap->size;parent=child)
if(temp >= heap->data[child]
)break
;else heap->data[parent]
= heap->data[child];}
heap->data[parent]
= temp;
return maxitem;}/*
@program 將堆結構中data[p]的下方的堆結構修改為最大堆
@param heap 最大堆的結構指標
@param p
*/void
percdown
(maxheap heap,
int p)
if(temp >= heap->data[child]
)break
;else heap->data[parent]
= heap->data[child];}
heap->data[parent]
= temp;
}void
buildmaxheap
(maxheap heap)
}
C 資料結構 堆
堆 一種可被視為完全二叉樹的結構,實現有多種方法 一 c stl 優先佇列實現 1.首先寫好佇列標頭檔案 include 2.定義乙個int型 值小的數優先順序高 先出佇列 的佇列 小根堆 最後的 與 間注意留空格 priority queue,greater a 大根堆的定義 priority q...
資料結構 堆 C
二叉堆堆排序 堆 heap 分為二叉堆 二項式堆 斐波那契堆,堆是非線性資料結構,相當於一維陣列,有兩個直接後繼。堆又被稱為優先佇列,儘管名為優先佇列,但堆並不是佇列。因為佇列遵循first in,first out,但是堆是按照元素的優先順序取出元素。所以 堆 是實現排程器的理想資料結構。堆排序與...
資料結構 堆的實現(C語言)
樹 樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。普通的二叉樹是不適合用陣列來儲存的,因為可能會存在大量的空間浪費。而完全二叉樹更適合使用順序結構儲存。現實中我們通常把堆 一種二叉樹 使用順序結構的陣列來儲存,需要注意的是這裡的堆和作業系統虛擬程序位址空間中的堆是...