二項隊列標頭檔C語言

來源:互聯網
上載者:User

/*binomial-queue.h -- 二項隊列標頭檔*/<br />/*標頭檔載入放在標頭檔是個好主意*/<br />#include <stdio.h><br />#include <stdlib.h><br />#define INFINITY 32767<br />/*資料類型定義*/</p><p>typedef int Item ;//為什麼我如此喜歡 int ^ ^<br />typedef struct node<br />{<br />Item item ;<br />struct node * left ;//左子樹<br />struct node * nextsibling ;//左兄弟<br />} Node ;<br />typedef Node * SubTree ;<br />typedef struct binqueue<br />{<br />SubTree * forest ;<br />int size ;<br />int current ;<br />} * BinQueue ;</p><p>/*介面函式宣告*/</p><p>/*操作:初始化一個二項隊列*/<br />/*操作前:pbq 指向一個二項隊列, size 指示其大小*/<br />/*操作後:如果記憶體配置成功, 該 size 大小的二項隊列被初始化為空白, 返回1; 否則返回0*/<br />int InitializeBinQueue (BinQueue * const pbq, const int size) ;</p><p>/*操作:確定一個二項隊列是否為空白*/<br />/*操作前:bq 是一個已初始化的二項隊列*/<br />/*操作後:如果該隊列為空白, 返回1; 否則返回0*/<br />int BinQueueIsEmpty (const BinQueue bq) ;</p><p>/*操作:合并兩個二項隊列*/<br />/*操作前:bq1, bq2 是兩個已初始化的二項隊列*/<br />/*操作後:如果合并後的二項隊列能夠放進 bq1, 並且 bq1 和 bq2 不是同一個二項隊列, 返回合并後的新的隊列; 否則返回原 bq1*/<br />BinQueue Merge (BinQueue bq1, BinQueue bq2) ;</p><p>/*操作:向二項隊列中插入元素*/<br />/*操作前:bq 是一個已初始化的二項隊列, item 是新元素*/<br />/*操作後:如果二項隊列未滿, 將 item 添加到該隊列中, 返回新隊列; 否則返回原隊列*/<br />BinQueue Insert (BinQueue bq, const Item item) ;</p><p>/*操作:刪除並返回一個二項隊列的最小元素*/<br />/*操作前:pbq 指向一個已初始化的二項隊列*/<br />/*操作後:如果該隊列不為空白, 刪除並返回最小元素; 否則返回 -INFINITY*/<br />Item DeleteMin (BinQueue bq) ;</p><p>/*操作:將一個函數依次作用於二項隊列中的所有元素*/<br />/*操作前:bq 是一個已初始化的二項隊列, pfun 指向一個沒有傳回值, 接受一個Item型別參數的函數*/<br />/*操作後:pfun 指向的函數被作用於隊列中所有元素1次*/<br />void Traversal (const BinQueue bq, void (* pfun) (const Item item)) ;</p><p>/*操作:釋放一個二項隊列所佔用的記憶體空間*/<br />/*操作前:bq 是一個已初始化的二項隊列*/<br />/*操作後:該隊列所佔用的記憶體空間被清空*/<br />void Release (const BinQueue bq) ;<br />

聯繫我們

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