配合Dijkstra演算法的二元堆積標頭檔C語言

來源:互聯網
上載者:User

/*binary_heap.h -- 二元堆積標頭檔*/<br />#include "new_adjacenty_list.h"</p><p>/*資料類型定義*/</p><p>typedef Vertex * Heap_Item ;<br />typedef struct binary_heap<br />{<br />Heap_Item * heap ;<br />int capacity ;<br />int current ;<br />} * Binary_Heap ;</p><p>/*介面函式宣告*/</p><p>/*操作:建立並初始化一個二元堆積*/<br />/*操作前:pbh 指向一個二元堆積, capacity 指示該堆的大小*/<br />/*操作後:如果 capacity > 0 && 記憶體配置成功, 建立該堆, 返回 1 ; 否則返回 0*/<br />/*時間複雜度: O(1)*/<br />int Initialize_B (Binary_Heap * const pbh, const int capacity) ;</p><p>/*操作:向堆中添加一個資料域為指定資料的元素*/<br />/*操作前:pbh 指向一個已初始化的二元堆積, hi 是待添加的指定資料*/<br />/*操作後:如果堆未滿, 向二元堆積中添加新元素, 返回 1 ; 否則返回 0*/<br />/*時間複雜度: O (log N)*/<br />int Insert_B (const Binary_Heap * const pbh, const Heap_Item hi) ;</p><p>/*操作:刪除並返回堆中最小的元素*/<br />/*操作前:pbh 指向一個已初始化的二元堆積*/<br />/*操作後:如果堆未空, 刪除堆中最小元素並返回; 否則返回堆中的啞元素*/<br />/*時間複雜度:O (log N)*/<br />Heap_Item DeleteMin_B (const Binary_Heap * const pbh) ;</p><p>/*操作:將堆中指定元素的 dist 域的值增加 Δ*/<br />/*操作前:phb 指向一個已初始化的二元堆積, index 指示指定元素的索引, triangle 指示Δ的大小*/<br />/*操作後:如果堆不為空白 && index 是合法的索引 && Δ >= 0, 堆中索引為 index 的元素的 dist 域被增加 Δ, 返回 1 ; 否則返回 0*/<br />/*時間複雜度:O (log N)*/<br />int IncreaseKey_B (const Binary_Heap * const pbh, const int index, const int triangle) ;</p><p>/*操作:將堆中指定元素的 dist 域值減少 Δ*/<br />/*操作前:pbh 指向一個一初始化的二元堆積, index 指示指定元素的索引, triangle 指示Δ的大小*/<br />/*操作後:如果堆不為空白 && index 是合法的索引 && Δ >= 0, 堆中索引為 index 的元素的 dist 域被減少 Δ, 返回 1 ; 否則返回 0*/<br />/*時間複雜度:O (log N)*/<br />int DecreaseKey_B (const Binary_Heap * const pbh, const int index, const int triangle) ;</p><p>/*操作:釋放一個二元堆積所佔用的記憶體空間*/<br />/*操作前:pbh 指向一個已初始化的二元堆積*/<br />/*操作後:該堆所佔用的記憶體空間被釋放*/<br />/*時間複雜度:O (1)*/<br />void Release_B (const Binary_Heap * const pbh) ;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.