簡介:
優先順序佇列是一種常見的資料結構,在《stl原始碼剖析》中給出的定義是:priorty_queue是以個帶權值觀念的queue,它允許加入新元素,移除舊元素,審視元素值等功能。
由於這是乙個queue,所以只允許在底端加入元素,並從頂端取出元素。
但是優先順序佇列中的元素並非依照被推入佇列的順序排列。而是自動依照元素的權值排列。權值最高者排在最前面。
預設的情況下維護的是乙個大堆,即權值以從高到低排列。
因為優先順序佇列的內部是用堆來維護,所以很多時候我們要使用堆的情況下會選擇用優先順序佇列來代替
優先順序佇列的基本操作(其實就和一般的佇列是一樣的):
常見用法:1.優先順序判斷預設使用《操作符,輸出按權值從高到低順序q.size();
//返回q裡元素個數
q.empty();
//返回q是否為空,空則返回1,否則返回0
q.push(k);
//在q的末尾插入k
q.pop();
//刪掉q的第乙個元素
q.top();
//返回q的第乙個元素
輸出:int
main
()
return
0;
}
6 5 4 3 1
2.權值從低到高的順序輸出(greater優先佇列)
priority_queue
, greater > q
第乙個引數為元素的型別,第二個引數為容器型別,第三個引數為比較函式(預設為less),上面的為從小到大的優先順序佇列,如果將greater改為less或者刪去第三個引數,即為權值從大到小排列。如圖。注意greater包含在標頭檔案functional內。
對應的還有less 優先佇列
priority_queue
,less >q;
這其實就和一開始的優先佇列一樣了,也是從權值大的開始輸出
3.對結構體進行操作
有時候我們想要往佇列裡儲存結構體,那麼為了實現和內建型別一樣的優先順序比較,我們就必須在結構體中實現對「
尋找大富翁(裸題)#include
using
namespace
std;
struct
node
};priority_queueq;
the kth great number
簡介:
佇列 優先順序佇列
優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去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...