演算法筆記 佇列概念

2021-10-04 05:23:06 字數 1266 閱讀 2533

佇列

queue 時一種先進先出的資料結構

以食堂排隊打飯為例,每個人都從隊伍最後面排起,隊伍最前面的人打完飯出隊

佇列總是從隊尾加入元素,而從隊首移除元素,滿足先進先出的規則

(注意!)使用乙個隊首元素front來指向隊首元素的前乙個位置

使用乙個隊尾指標rear來指向隊尾元素

和棧類似,當使用陣列來實現佇列時,隊首指標front和隊尾指標rear為int型變數,陣列下標從0開始

使用鍊錶實現佇列時,則為int*型變數的指標

以下從陣列q來實現幾個佇列的常用操作,int型變數存放隊首元素的前乙個元素的下標,rear存放隊尾元素的下標

清空 clear

初始狀態為front = -1, rear = -1

注意:front = -1, rear = 0表示佇列中已經有乙個元素,沒有元素rear = -1

void

clear()

獲取佇列內元素的個數 size

佇列內元素為 rear - front ,可手動模仿過程並觀察

int

size()

判空 empty

判定隊列為空的條件為 front == rear

bool

empty()

入隊 push

由於隊尾指標rear指向隊尾元素,將元素入隊前需先把 rear + 1 再存放

void

push

(int x)

出隊 pop

可以直接把隊首指標 + 1實現出隊效果

void

pop(

)

取隊首元素(get_front)

注意,front +1 才是隊首元素的位置

int

get_front()

取隊尾元素(get_rear)

直接訪問rear的位置即可

int

get_rear()

注意:和棧類似,取隊首、隊尾元素操作必須在佇列非空的情形下使用

在stl中同樣沒有實現佇列的清空操作,可以用以下寫法

while

(!q.

empty()

)

演算法筆記 佇列

是什麼 什麼是佇列 為什麼為什麼有佇列這種資料結構 怎麼學習佇列這種資料結構 順序佇列class arrayqueue 入隊 public boolean enqueue string item last last first first 0 queuelist last item last ret...

演算法筆記 佇列

1 佇列是乙個有序列表,可以用陣列或鍊錶來實現.2 遵循先入先出原則.即 先存入佇列的資料,要先取出來.後存入後取.模擬火車進隧道 3 佇列的插入操作稱為入隊 push 刪除操作稱為出隊 pop 4 示意圖 使用陣列模擬佇列示意圖 5 由於普通佇列會產生 假溢位 現象,所以我們採用環形佇列來解決這個...

演算法筆記 佇列

佇列 先進先出 食堂裡打飯,先入隊的人 排在最前的人 則最早打飯出隊。用隊首指標front 出隊 來指向隊首元素的前乙個位置,而rear 入隊 隊尾指標來指向隊尾元素 當用陣列來實現佇列時,隊首指標front和隊尾指標rear為int變數 陣列下標從0開始 而使用鍊錶來實現佇列時,則為int 型變數...