資料結構5 佇列

2021-07-10 15:42:41 字數 1027 閱讀 4717

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 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列最大...