/*binary_heap.h -- 二元堆積標頭檔*/<br />#define MINDATA -32768</p><p>/*資料類型定義*/</p><p>typedef int Item ;<br />typedef struct heap<br />{<br />Item * array ;<br />int capacity ;/*容量*/<br />int size ;/*當前資料數量*/<br />} * Heap ;</p><p>/*介面函式宣告*/</p><p>/*操作:建立並初始化一個二元堆積*/<br />/*操作前:pheap 指向一個二元堆積, capacity 是用來指定堆容量的變數*/<br />/*操作後:如果記憶體配置成功, 建立並將該堆初始化為空白, capacity 容量, 返回1; 否則返回0*/<br />int InitializeHeap (Heap * const pheap, const int capacity) ;</p><p>/*操作:確定一個二元堆積是否為空白*/<br />/*操作前:pheap 指向一個已初始化的二元堆積*/<br />/*操作後:如果該堆為空白, 返回1; 否則返回0*/<br />int HeapIsEmpty (const Heap * const pheap) ;</p><p>/*操作:確定一個二元堆積是否已滿*/<br />/*操作前: pheap 指向一個已初始化的二元堆積*/<br />/*操作後:如果該堆已滿, 返回1; 否則返回0*/<br />int HeapIsFull (const Heap * const pheap) ;</p><p>/*操作:將一個資料插入到一個已初始化的二元堆積中*/<br />/*操作前:pheap 指向一個已初始化的二元堆積, item 是準備插入的資料*/<br />/*操作後:如果堆未滿, 則將 item 插入堆中, 返回1; 否則返回0*/<br />int Insert (const Heap * const pheap, const Item item) ;</p><p>/*操作:刪除堆中的最小元素*/<br />/*操作前:pheap 指向一個已初始化的堆*/<br />/*操作後:pheap 指向的二元堆積中的最小元被刪除並被返回*/<br />Item DeleteMin (const Heap * const pheap) ;</p><p>/*操作:降低在二元堆積中指定位置處的關鍵字的值*/<br />/*操作前:pheap 指向一個已初始化的二元堆積, position 是用來指定在堆中位置的變數, triangle 是降低的幅度值*/<br />/*操作後:如果二元堆積不為空白, 在二元堆積中存在位置 position 並且 triangle > 0, 則二元堆積中 position 處的關鍵字被降低 triangle, 返回1; 否則返回0*/<br />int DecreaseKey (const Heap * const pheap, const int position, const Item triangle) ;</p><p>/*操作:增加在二元堆積中指定位置處的關鍵字的值*/<br />/*操作前:pheap 指向一個已初始化的二元堆積, position 是用來指定在堆中位置的變數, triangle 是增加的幅度值*/<br />/*操作後:如果二元堆積不為空白, 在二元堆積中存在位置 position 並且 triangle > 0, 則二元堆積中 position 處的關鍵字被增加 triangle, 返回1; 否則返回0*/<br />int IncreaseKey (const Heap * const pheap, const int position, const Item triangle) ;</p><p>/*操作:刪除在二元堆積中指定位置處的元素*/<br />/*操作前:pheap 指向一個已初始化的二元堆積, position 是用來指定在堆中位置的變數*/<br />/*操作後:如果二元堆積不為空白, 在二元堆積中存在位置 position, 將 position 位置處的元素從二元堆積中刪除, 返回1; 否則返回0*/<br />int Delete (const Heap * const pheap, const int position) ;</p><p>/*操作:以一個數組作為輸入將其放入一個空二元堆積中*/<br />/*操作前:pheap 指向一個已初始化的空二元堆積, array 是資料數組, array_size 是指示數組大小的變數*/<br />/*操作後:如果二元堆積為空白, 並且數組大小<=二元堆積大小, array 數組中的內容被添加到空二元堆積中, 返回1; 否則返回0*/<br />int BuildHeap (const Heap * const pheap, const Item * const array, const int array_size) ;</p><p>/*操作:從二元堆積數組低索引向高索引依次將一個函數作用於二元堆積中所有元素1次*/<br />/*操作前:pheap 指向一個已初始化的二元堆積, pfun 指向一個沒有傳回值, 接受一個Item型別參數的函數*/<br />/*操作後:pfun 指向的函數被依次作用於二元堆積中的所有元素1次*/<br />void Traversal (const Heap * const pheap, void (* pfun) (const Item item)) ;</p><p>/*操作:釋放一個二元堆積所佔用的記憶體空間*/<br />/*操作前:pheap 指向一個已初始化的二元堆積*/<br />/*操作後:該二元堆積所佔用的記憶體空間被釋放*/<br />void Release (const Heap * const pheap) ;