二元堆積–二元堆積標頭檔C語言

來源:互聯網
上載者:User

/*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) ;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.