佇列是一種先入先出(first in first out)的資料結構,它的實現用兩個整型變數(head、tail
)和乙個儲存資料的陣列(date[num]
)來實現的。
自定義的資料結構體:
struct queue;
這裡要注意的是結構體內定義的是型別和變數空間,所以最好不要在結構體內初始化
佇列的操作總共有三種:
一、入列操作:
q.date[tail] = x;
tail++;
二、出列操作:
x = q.date[head];
head++;
三、判斷非空操作:
二、佇列物件的操作:headstl(queue)
的資料結構型別c++語言的stl中自帶了queue
queue
的模板類封裝在標頭檔案中
queue
模板類需要兩個引數,乙個是元素型別,乙個是容器型別(元素型別書必要的,容器型別是可選的,預設為deque型別)
一、佇列物件的定義:
queue< int > q1;
queue< double > q2;
入隊:
q.push(x); // 將x放入佇列的尾部
出列:
q.pop; // 彈出佇列的頭部資料
非空判斷:
q.empty(); // 判斷操作的返回值
訪問隊首元素:
q.front(); // 得到返回值
訪問隊尾元素:
q.back(); // 得到返回值
訪問佇列中的元素個數:
q.size(); // 返回元素個數的整型值
三、priority_queue(優先佇列)
在的標頭檔案中,除了
queue
這個模板類之外,還定義了另外乙個模板類priority_queue(優先佇列)
優先佇列和佇列的區別在於優先佇列不是按照隊列入隊的順序出隊,而是按照佇列中元素的優先權順序來出隊(預設為大者優先,也可以通過指定運算元來指定自己的優先順序)。
priority_queue
模板類有三個引數:第乙個是元素型別,第二個是容器型別,第三個是比較運算元。其中後兩個引數都可以省略,預設容器為vector
,預設運算元為less
,即小的往前排,大的往後排(出隊時序列尾的元素出隊)。
定義priority_queue物件:
priority_queue< int > q1;
priority_queue< pair> q2; // 注意在兩個尖括號之間一定要留空格。
priority_queue, greater> q3; // 定義小的先出隊
priority_queue
的基本操作和queue
基本相同
初學者在使用priority_queue
時,最困難的可能就是如何定義比較運算元了。 如果是基本資料型別,或已定義了比較運算子的類,可以直接用stl的less
運算元和greater
運算元——預設為使用less
運算元,即小的往前排,大的先出隊。 如果要定義自己的比較運算元,方法有多種,這裡介紹其中的一種:過載比較運算子。優先隊 列試圖將兩個元素x 和y 代入比較運算子(對less
運算元,呼叫xy), 若結果為真,則x 排在y 前面,y 將先於x 出隊,反之,則將y 排在x 前面,x 將先出隊。 看下面這個簡單的示例:
#include #include using namespace std;
class t
};bool operator < (const t &t1, const t &t2)
main()
return 1;
}
輸出結果為(注意是按照z 的順序從大到小出隊的):
3 3 6
2 2 5
1 5 4
4 4 3
再看乙個按照z 的順序從小到大出隊的例子:
#include #include using namespace std;
class t
};bool operator > (const t &t1, const t &t2)
main()
return 1;
}
輸出結果為:
4 4 3
1 5 4
2 2 5
3 3 6
如果我們把第乙個例子中的比較運算子過載為:
bool operator < (const t &t1, const t &t2)
則第乙個例子的程式會得到和第二個例子的程式相同的輸出結果。
STL學習筆記之佇列queue
只能訪問queue容器介面卡的第乙個和最後乙個元素。只能在容器的末尾新增新元素,只能從頭部移除元素。fifo 先進先出 1.初始化 需要標頭檔案 queueque 2.成員函式 c 佇列queue類成員函式如下 back 返回最後乙個元素 empty 如果佇列空則返回真 front 返回第乙個元素 ...
c x學習筆記之佇列Queue用法
c 中queue的用法 queue佇列就是先進先出。它並沒有實現 ilist,icollection。所以它不能按索引訪問元素,不能使用add和remove。下面是 queue的一些方法和屬性 enqueue 在佇列的末端新增元素 dequeue 在佇列的頭部讀取和刪除乙個元素,注意,這裡讀取元素的...
queue的長度 佇列 Queue
佇列 queue 是先進先出 fifo,first in first out 的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端 稱為rear 進行插入操作,在前端 稱為front 進行刪除操作。隊結構 迴圈佇列可以更簡單防止偽溢位 假溢位 的發生,但佇列大小是固定的。防止假溢位,如d...