1 #include 2 #include 34 #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...