雙端佇列詳解 C語言實現基本操作

2021-10-09 21:42:00 字數 1304 閱讀 6201

一般來說,雙端佇列用迴圈陣列來實現。

push 將元素插入表頭 front- -

pop 刪除頭部元素 front++

inject 將元素插入到表尾 rear++

eject 刪除尾部元素 rear- -

我們初始化時,rear=front=0;

我們在實現雙端佇列是時候需要注意以下幾點:

1.front指向第乙個元素的下標(初始化為0)

2.rear指向最後乙個元素的下標的下乙個位置(初始化為0)

對於每一種操作:

push:先把front位置確定,再在front的位置放上元素

front-- --,為防止出界,q->front = (q->front+q->maxsize)%(q->maxsize);

pop:先取出在front位置的元素設為x(需要被pop出去),再調整front位置,最後return x

front++,為防止出界,q->front = (q->front)%(q->maxsize);

inject:先再rear的位置插入元素,再調整rear的位置

rear++,為防止出界,q->rear = (q->rear)%(q->maxsize);

eject :先把rear的位置向前挪一位,再刪除再rear位置的元素

rear–,為防止出界,q->rear = (q->rear + q->maxsize)%(q->maxsize);

所有++後可能出界的處理辦法同pop,inject

所有–後可能出界的處理辦法同push,eject

**如下:

雙端佇列基本結構體

typedef

struct node

*deque;

deque gen

(int maxsize)

bool push

(deque q,

int x)

//把項x插到雙端佇列的前端

intpop

(deque q)

//從雙端佇列的前端刪除項並將其返回

bool inject

(deque q,

int x)

//將x插入到雙端佇列的尾端

inteject

(deque q)

//將x從佇列尾端刪除

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

佇列 一.佇列的定義及基本運算 棧是一種後進先出的資料結構,在實際問題中還經常使用一種 先進先出 的資料結構 即插入在表一端進行,而刪除在表的另一端進行,將這種資料結構稱為隊或佇列,把允許插 入的一端叫隊尾 rear 把允許刪除的一端叫隊頭 front 二.佇列的儲存實現及運算實現 與線性表 棧類似...

deque雙端佇列基本操作

定義 dequemydeq 檢視佇列頭,支援修改 int front mydeq.front mydeq.front 15 檢視佇列尾部 int back mydeq.back mydeq.back 15 從頭部插入資料 mydeq.push front 15 從頭部刪除資料 mydeq.pop f...

鏈式佇列C語言實現詳解

目錄 一 佇列基礎知識 二 鏈式佇列資料結構 三 鏈式佇列操作函式宣告 四 建立鏈式佇列 1 佇列頭部動態建立 2 佇列頭部靜態建立 五 出佇列 六 入佇列 七 佇列刪除 八 佇列銷毀 九 驗證程式 tail指標指向隊尾 跟順序佇列有點不同,順序佇列tail指向即將入隊的節點,入隊過程為 將資料存放...