5.1簡介
佇列(queue)和堆疊一樣是一種有序鍊錶,屬於抽象資料型別。不同在於是先進先出(first in,first out,fifo)。
堆疊只需要乙個top指標指向堆疊頂端即可,但是佇列必須使用front和rear兩個指標分別指向佇列的前端和尾端。
基本操作:
1)create:建立空佇列;
2)add:將新資料加入到佇列的尾端,返回新佇列;
3)delete:刪除佇列前端資料,並返回新佇列;
4)front:返回佇列前端值;
5)empty:若隊列為空集,返回為真,否則false。
佇列的陣列實現:
#includeusing namespace std;
const
int max=20;
int main()
;char ch;
front=rear=-1;//初始化,因為c++編碼從0開始,所以表示空佇列
while(real
1&&ch!='e')
else
coutreturn 0;
}
佇列的鍊錶實現:
5.2佇列的應用
主要應用有:
1)廣度優先搜尋發(bfs);
2)計算機的模擬;
3)cpu的工作程序;
迴圈佇列:
目的:為了節約直線佇列在資料移動過程中所浪費的時間;
front指標永遠以逆時針方向指向佇列中第乙個元素前乙個位置,rear則指向當前佇列的最後乙個位置,一開始front和rear均初始化為-1,表示空佇列。
其實就是乙個環形佇列!
優先佇列(priority queue):
是一種不必遵守佇列特性,即先進先出的有序鍊錶,其中每乙個元素都賦予乙個優先順序,加入元素時可以任意加入,但是有最高優先順序者則最先輸出。
雙向佇列(double-ends queues):
是一種前後兩端都可以輸入或取出資料的有序鍊錶。兩邊的指標都往佇列的**移動。
資料結構(二) 佇列
一 佇列定義 佇列是限定在一端進行插入,另一端進行刪除特殊線性表。二 佇列基本操作 入隊出隊 三 佇列例題 1.例1 舞伴配對問題 分析 這一題是一道經典的取模運算,每一次將編號往前加一位,到達n就取模。include include include include int main return ...
資料結構 七 佇列
1 佇列需要具備的特性 佇列和棧的底層實現資料結構可以是 陣列 鍊錶,只不過在此基礎上,佇列和棧需要過載兩個函式 節點的插入與刪除函式。佇列只能從煉表頭刪除節點,從鍊錶末尾插入節點 2 示例 ifndef data struct queue h define data struct queue h ...
資料結構 二 (佇列)
在模擬實現 佇列前應先簡單的了解先佇列的一些特點 佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列最大...