佇列 優先佇列的學習

2021-07-11 09:20:40 字數 1843 閱讀 5941

佇列
定義:佇列是限定只能在表尾進行

插入,在表頭進行刪除的線性表

隊尾——允許插入的一端

隊頭——允許刪除的一端

佇列的定義
#include< queue>//標頭檔案

using namespace std; //需要加上使用名稱

空間,和sort()排序函式是一樣的。

queue < int> q; //格式:queue 《型別名》 物件。

//原始檔字尾應為.cpp

更多定義例子:

queue < double> q2, q3, q4[100];

queue < char> xue;

佇列的函式
push() 在隊尾增加元素,引數為元素

pop() 移除隊頭元素(不會返回棧頂元素的值)

front() 返回隊頭元素

empty() 隊列為空則返回真

size() 返回佇列中元素數目

訪問形式 物件.函式

queue < int> q; q.push(100); q.pop();

優先佇列
定義:顧名思義,首先它是乙個佇列,但是它強調了「優先」二字,所以,已經不能算是一般意義上的佇列了,它的「優先」意指取隊首元素時,有一定的選擇性,即根據元素的屬性選擇某一項值最優的出隊~

include< queue>//標頭檔案

using namespace std;

//需要加上使用命名空間,和sort()排序函式是一樣的。

priority_queue < int> q;

//格式:queue 《型別名》 物件

//原始檔字尾應為.cpp

更多定義例子:

priority_queue < double> q2, q3, q4[100];

priority_queue < char> xue;

優先佇列的函式
push() 在隊尾增加元素,引數為元素

pop() 移除隊頭元素(不會返回棧頂元素的值)

top() 返回隊頭元素

empty() 隊列為空則返回真

size() 返回佇列中元素數目

訪問形式 物件.函式

priority_queue < int> q; q.push(100); q.pop();

優先佇列的使用
用法一:

priority_queue < int> q; 預設為最大值優先;

用法二:

priority_queue < int>,great< int> >q(最小值優先)

priority_queue < int>,less< int> >q(最大值優先)

用法三:自定義優先順序。

友元函式,運算子過載。

(最大值優先和小於號有關,最小值優先和大於號有關)

friend bool operator < (node_a a, node_a b) //最小值優先

bool operator < (const node_b &t) const //最小值優先

friend bool operator < (node_a a, node_a b) //最大值優先

bool operator < (const node_b &t) const //最大值優先

優先佇列學習

一 相關定義 優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大到小的順序排序。元素的比較規則預設按元素值由大到小排序,可以過載 操...

優先佇列學習總結

普通的佇列,遵循先進先出的規則,進行元素的新增和查詢,但是對於很多情況下,我們想要在序列中找符合我們要求的元素 比如序列中最大的元素 這時候,無論是普通的線性表還是線性表中比較特殊的棧或者佇列,找到該指定元素的範圍都會卡在時間複雜度為o n 的級別,其實我們完全可以實現查詢時間複雜度降為o 1 就是...

優先佇列學習總結

佇列 現實中我們最常見的是,去醫院 去銀行取錢,一般都需要排隊,這就是佇列,佇列有乙個最顯著的特徵 先進先出,一般情況下,大多都是先到先辦理,但是也是有特殊的情況,例如在醫院,萬一來個急診的,一定是急診的優先,或者在銀行,來個vip,有綠色通道。這種特殊的情況下,就是佇列中的特殊的佇列 優先佇列。它...