Priority Queue 優先佇列

2022-07-16 04:30:16 字數 2020 閱讀 2331

我們都知道,佇列是一種fifo的資料結構,規定在隊尾增加元素,在隊首刪除元素,和食堂排隊打飯乙個道理。(當然,插隊的人是很鄙視的)。而在優先佇列中,每個元素卻有了特權,被賦予了優先順序,從而在訪問元素時,優先順序高的最先出隊(如有特權的軍人則可以率先購票,就是這個道理)。

對pq的操作有search,insert和delete。在最小優先佇列(min priority queue)中,查詢用來搜尋優先權最小的元素,刪處即刪處該元素,反之,最大優先佇列(max priority queue)中,查詢優先權最大的元素,刪除即刪處該元素。

基本操作:empty() 判空、pop()刪處第乙個元素、push()增加元素、size()返回元素個數,top()返回優先順序最高的元素。

pq的特徵:priority_queue,cmp > que;第乙個引數為資料型別,第二個為容器型別,第三個為比較型別。

接下來是構造pq,構造好了才可以用它。

priority_queueque; 這裡構造int型資料型別,預設優先順序(最大值優先)

如果我們要最小值優先的話,可以有4種優先順序控制方法。

首先標頭檔案包含#inclu而functional提供了基於模板的比較函式物件、

equal_to等於

not_equal_togreater大於

greater_equal大於等於

less小於

less_equal小於等於

構造:

priority_queue,less >que1;//

最大值優先

priority_queue,greater  >que2;//

最小值優先

struct

cmp1

};struct

cmp2

};

//

構造priority_queue,cmp1>que1;//

最大值優先

priority_queue,cmp2>que2;//

最小值優先

struct

node1

};

struct

node2

};

//構造

priority_queueque1;

priority_queue

que2;

struct

node1

;bool

operator

< (const node1 &a,const node1 &b)

struct

node2

;bool

operator

< (const node2 &a,const node2 &b)

//構造

priority_queueque1;

priority_queue

que2;

#include#include#includeusing namespace std;

struct stud

bool operator < (const stud & s)const

bool operator > (const stud & s)const

};struct cmp

};int main()

; int n = sizeof(a) / sizeof(a[0]);

//使用stud結構體中的《 關係定義pq1

priority_queuepq1(a,a+n);

cout<<"pq1: ";

while(! pq1.empty())//no遞減輸出

bool

operator

< (const stud &s )const

//過載 <

};struct

cmp};

priority queue 優先佇列)

佇列 先輸入先輸出 優先佇列使用方法 標頭檔案 include using namespace std 宣告方法 1.普通方法 priority queueq 下劃線不可漏,預設從大到小輸出隊 2.結構體宣告方式 struct node int x,y frinend bool operator n...

優先佇列 priority queue

優先佇列 是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列 先出優先佇列的元素是佇列中優先順序最高的元素。就像 急診病人插隊 優先佇列的標頭檔案也是 用 priority queuepq 來宣告。這個pq是乙個越小的整數優先順序越低的優先佇列。出隊元素不是先進隊的元素,出隊的方法由que...

優先佇列 PriorityQueue

import queue q queue.priorityqueue q.put 1 新增元素 q.get 刪除元素 python的優先佇列基於最小堆實現。heap 堆 是乙個除了底層節點外的完全填滿的二叉樹,底層可以不完全,左到右填充節點。而最小堆意味著,任一非終端節點的資料值均不大於其左子節點和...