優先順序佇列的用法(基本)

2021-10-05 15:46:17 字數 1540 閱讀 8459

簡介:

優先順序佇列是一種常見的資料結構,在《stl原始碼剖析》中給出的定義是:priorty_queue是以個帶權值觀念的queue,它允許加入新元素,移除舊元素,審視元素值等功能。

由於這是乙個queue,所以只允許在底端加入元素,並從頂端取出元素。 

但是優先順序佇列中的元素並非依照被推入佇列的順序排列。而是自動依照元素的權值排列。權值最高者排在最前面。 

預設的情況下維護的是乙個大堆,即權值以從高到低排列。

因為優先順序佇列的內部是用堆來維護,所以很多時候我們要使用堆的情況下會選擇用優先順序佇列來代替

優先順序佇列的基本操作(其實就和一般的佇列是一樣的):

q.size();

//返回q裡元素個數

q.empty();

//返回q是否為空,空則返回1,否則返回0

q.push(k);

//在q的末尾插入k

q.pop();

//刪掉q的第乙個元素

q.top();

//返回q的第乙個元素

常見用法:1.優先順序判斷預設使用《操作符,輸出按權值從高到低順序

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...