資料結構 樹 C語言 堆

2021-08-29 22:41:42 字數 1435 閱讀 3724

#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 個有限結點組成乙個具有層次關係的集合。普通的二叉樹是不適合用陣列來儲存的,因為可能會存在大量的空間浪費。而完全二叉樹更適合使用順序結構儲存。現實中我們通常把堆 一種二叉樹 使用順序結構的陣列來儲存,需要注意的是這裡的堆和作業系統虛擬程序位址空間中的堆是...