優先佇列基本操作

2021-08-28 02:06:28 字數 1307 閱讀 5698

了解完佇列之後我們來了解一種特殊的佇列--優先佇列

優先佇列是一種特殊的佇列,相較於佇列它的特殊也是功能最強大之處在於能自動排序。

#include

using namespace std; //命名空間不是標頭檔案

優先佇列宣告的基本格式是: 

priority_queue《結構型別》 佇列名;

例:

priority_queue p; 

priority_queue p;

然而最常用的是以下幾種

priority_queue p;

//node是乙個結構體

//結構體裡過載了『<』小於符號

priority_queue ,greater> p;

//不需要#include標頭檔案

//注意後面兩個「>」不要寫在一起,「>>」是右移運算子

priority_queue ,less>p;

與佇列的操作基本一致

例.queueq;

1.入隊 q.push();

2.出隊 q.pop();

3.求佇列中元素個數 q.size();

4.判斷度列是否為空 q.empty();若為空返回true,否則返回false

5.獲得首元素 q.top();

6.返回q的第乙個元素  q.top();

7.返回q的末尾元素 q.back();

預設的優先佇列 priority_queue q;排序是由大到小的,**為證

#include#includeusing namespace std;

int main()

; for(int i=0;i<5;i++)

q.push(num[i]);

for(int i=0;i<5;i++)

return 0;

}

預設的優先佇列(結構體,過載小於)

#include#includeusing namespace std;

struct node

printf("輸出:\n");

while(!q.empty())

return 0;

}

接下來是less和greater優先佇列

以int為例,先宣告:

由此可見

less是從大到小,greater是從小到大

堆(優先佇列)的基本操作

堆是一棵完全二叉樹,所以可以利用陣列來實現。以1號作為root,則對於陣列中的任意乙個i,其左兒子在 2 i 右兒子在 2 i 1 父親在 i 2 下面以最小堆為例,實現一些基本操作 define inf 0x3f3f3f3f define max 1005 int heap max heap 0 ...

c 佇列,棧,優先佇列的基本操作

優先佇列 priority queue 的基本操作 struct node struct node empty 隊列為空返回1 pop 出隊 push 入隊 top 返回佇列中優先順序最高的元素 size 返回佇列中元素的個數 佇列 que.empty 如果隊列為空返回true,否則返回false ...

優先佇列基本用法

優先佇列就是堆 預設是大頂堆 greater 是小頂堆 1.用vector的時候得在前面寫上vector內的基型別 然後再加vector 2.而基型別就直接寫即可 基型別自定義排序可以直接用 但是pair等結構的時候,必須得加乙個vector容器了 include include include u...