<1>概念
優先順序佇列,顧名思義,就是一種根據一定優先順序儲存和取出資料的佇列。它可以說是佇列和排序的完美結合體,不僅可以儲存資料,還可以將這些資料按照我們設定的規則進行排序。優先順序佇列是堆的一種常見應用。有最大優先順序佇列(最大堆)和最小優先順序佇列(最小堆)。優先順序佇列是一種維護有一組元素構成的集合s的資料結構。
<2>優先佇列支援的基本運算
//建立乙個儲存元素為int的優先順序佇列,其實是建了乙個小頂堆
//但是請特別注意這樣的建的堆預設是大頂堆,即我們從堆頂去的元素是整個堆中元素最大的。
priority_queueheap;
//可以這樣建乙個表示小頂堆的優先順序佇列
priority_queue, greater> heap;
//將元素x放入優先順序佇列中
heap.push(x);
//取出優先順序佇列第乙個元素(堆頂元素),儲存在x中
int x = heap.top();
//彈出堆頂元素,取出後堆會自動調整為乙個最小堆(最大堆)
heap.pop();
//判斷是否為空
heap.empty();
//標頭檔案
#include
<3>自定義優先順序
新增元素為結構體需要過載'
#include#include#includeusing namespace std;
struct node
/* 不要過載這個'>'只過載'
friend bool operator > (node node1,node node2)
*/};
struct node2
};int main()
printf("最大優先佇列:\n");
//出佇列
for(i = 0;i < 5;i++)
//例項二 結構體2
node2 b2[5];
b2[0].value = 6; b2[0].key = 1;
b2[1].value = 9; b2[1].key = 2;
b2[2].value = 2; b2[2].key = 3;
b2[3].value = 8; b2[3].key = 4;
b2[4].value = 1; b2[4].key = 5;
//最大優先佇列
priority_queueheap2;
//入佇列
for(i = 0;i < 5;i++)
printf("最小優先佇列:\n");
//出佇列
注意:
struct node
};
這樣會報錯。因為標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。
看病要排隊
搬水果
佇列 優先順序佇列
優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去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...