優先順序佇列

2022-07-29 17:00:33 字數 1660 閱讀 7405

1 #include 2 #include 3

4 #include 5

using

namespace

std;67

intmain()8;

18priority_queueq1;

19for(int i=0;i20

q1.push(a[i]);21}

22while(!q1.empty())

2627

*/28

2930

31/*

32**********************第二種方法:

33在示例1中,如果我們要把元素從小到大輸出怎麼辦呢?

34這時我們可以傳入乙個比較函式,使用functional函式物件作為比較函式。

3536

priority_queue, greater>q1;

37其中

38第二個引數為容器型別。

39第二個引數為比較函式。

40*/

4142

43const

int len=12;44

int a[len]=;

45 priority_queue,less >q1;

46for(int i=0;i)

49while(!q1.empty())

5354

55/*

56第三種方法:

57自定義優先順序。

5859

struct node

6065

int priority;

66int value;

67};

68在該結構中,value為值,priority為優先順序。

69通過自定義operator《操作符來比較元素中的優先順序。

70在示例3中輸出結果為:

71優先順序 值

729 5

738 2

746 1

752 3

761 4

77但如果結構定義如下:

7879

struct node

8085

int priority;

86int value;

87};

88則會編譯不過(g++編譯器)

89因為標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。

90而且自定義型別的《操作符與》操作符並無直接聯絡,故會編譯不過。

9192

*/93

94/*

95kuangbin寫法:

96struct node

97node[maxn];

100bool cmp1(node a,node b)

101104

105struct cmp

106112

};113

priority_queue, cmp>q;//定義方法

114115

116strunct cmp

122}

123124

125*/

126127

128129

130131

132133

return0;

134 }

佇列 優先順序佇列

優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去1.public class priorityq 插入 public void insert long item else quearray j 1 item nitem 刪除 public long ...

優先順序佇列

分為最小優先順序佇列和最大優先順序佇列。優先順序佇列是一種用來維護一組元素構成的集合s的資料結構,這一組元素都有乙個關鍵字key,乙個最大優先順序佇列支援的操作 insert s,x 把x插入到集合s中 maxmum s 返回s中最大元素 extra max s 去掉s中最大關鍵字並返回該最大關鍵子...

優先順序佇列

1 include stdafx.h 2 include3 4 using namespace std 5 6 define max heap len 107 int heap max heap len 8 int heap size 0 the number of elements in heap...