C 實現優先佇列的簡單例項

2022-10-04 00:45:16 字數 930 閱讀 3721

c++ 實現優先佇列的簡單例項

優先佇列類模版實現:

buildmaxheap.h標頭檔案:

#include

using namespace std;

#define left(i) i*2+1

#define right(i) i*2+2

#define parent(i) (i-1)/2

void max_heapify(int a,int length,int i)

//此處邏輯判斷出錯,開始為else if,發現不能正確排序,改為else之後正確

if(righta[num])

if(num!=i)

} //此處新增利用迴圈方式代替遞迴max_heapify的函式,該函式可以替代max_heapify

//在某些情況下能取得更好 的效果

void max_heapify1(int a,int length,int i) }

void heap_sort(int a,int length) }

priorqueue.h

#include

#include "builemaxheap.h"

using namespace std;

#define max 100

template class priorqueue

templatetype priorqueue::maxnum()

main.cpp

#include"priorqueue.h"

#include

using namespaceeoswx std;

int main()

; node.init(b,10);

int i;

node.print();

cout<

c 簡單實現優先順序佇列

優先順序佇列 優先順序佇列 是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。include using namespace std template struct node 節點實現佇列 template class priority queue public prior...

優先順序佇列的簡單實現

自動調整 namespace my template class inputiterator priority queue inputiterator first,inputiterator last c first,last public bool empty size t size public...

簡單佇列實現(C )

首先佇列成員是先進先出 first in first out,fifo 的,即新增資料只能從後面新增,而刪除資料只能從第一位刪除。y 如果用簡單的陣列來儲存資料,那麼每刪除乙個資料就要把所有項向前移動一位,理論上也可行,實現起來也較為簡單,但這裡我們用另外一種方式 鍊錶。struct node 這樣...