C語言實現 佇列及基本操作

2021-08-15 11:31:12 字數 1256 閱讀 8278

佇列

一.  佇列的定義及基本運算

棧是一種後進先出的資料結構,在實際問題中還經常使用一種「先進先出」的資料結構:

即插入在表一端進行,而刪除在表的另一端進行,將這種資料結構稱為隊或佇列,把允許插

入的一端叫隊尾(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指向第乙個元素的下...