佇列
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 型變數...