佇列
一. 佇列的定義及基本運算
棧是一種後進先出的資料結構,在實際問題中還經常使用一種「先進先出」的資料結構:
即插入在表一端進行,而刪除在表的另一端進行,將這種資料結構稱為隊或佇列,把允許插
入的一端叫隊尾(rear) ,把允許刪除的一端叫隊頭(front)。
二. 佇列的儲存實現及運算實現
與線性表、棧類似,佇列也有順序儲存和鏈式儲存兩種儲存方法。
1.順序佇列
迴圈佇列的型別定義如下:
#define maxqsize 100 //最大佇列長度
typedef struct sqqueue;
下面是迴圈佇列上基本操作的實現。
(1)入隊:
int enqueue (sqqueue &q, qelemtype e)
(2)出隊:
int dequeue (sqqueue &q, qelemtype &e)
(3)求迴圈佇列元素個數:
int queuelength(sqqueue q)
2.鏈佇列
鏈式儲存的隊稱為鏈佇列。和鏈棧類似,用單鏈表來實現鏈佇列,根據隊的先進先出原
則,為了操作上的方便,分別需要乙個頭指標和尾指標。
鏈佇列的形式描述如下:
typedef struct qnode qnode, *queueptr;
typedef struct linkqueue;
定義乙個指向鏈佇列的指標:linkqueue q;
下面是鏈佇列的基本運算的實現。
(1)入隊
int enqueue (linkqueue &q, qelemtype e)
(2)出隊
int dequeue (linkqueue &q, qelemtype &e)
3.除了棧和佇列之外,還有一種限定性資料結構是雙端佇列。
(1)雙端佇列:可以在雙端進行插入和刪除操作的線性表。
(2)輸入受限的雙端佇列:線性表的兩端都可以輸出資料元素,但是只能在一端輸入數
據元素。
(3)輸出受限的雙端佇列:線性表的兩端都可以輸入資料元素,但是只能在一端輸出數
據元素。
迴圈佇列基本操作及遍歷 C語言實現(陣列)
與棧不同 佇列基本原則 先入先出 後出 約定乙個下標 rear 指向當前入隊元素要插入的下標 即最後乙個入隊元素下標的下一位 即 如果要加入新的元素x 執行elem s rear x 乙個下標 front 指向最先出隊的元素 typedef struct squene 初始化 把front 和rea...
C語言實現佇列的定義及其基本操作
佇列的定義 佇列的特點 佇列的儲存結構 順序佇列的定義及其基本操作 鏈隊的定義及其基本操作 1 佇列的定義 佇列,簡稱隊,它是一種操作受限的線性表,其限制在表的一端進行插入,另一端進行刪除。可進行插入的一端稱為隊尾 rear 可進行刪除的一端稱為隊頭 front 向隊中插入元素叫入隊,新元素進入之後...
雙端佇列詳解 C語言實現基本操作
一般來說,雙端佇列用迴圈陣列來實現。push 將元素插入表頭 front pop 刪除頭部元素 front inject 將元素插入到表尾 rear eject 刪除尾部元素 rear 我們初始化時,rear front 0 我們在實現雙端佇列是時候需要注意以下幾點 1.front指向第乙個元素的下...