佇列(queue)是乙個資料集合,僅允許在列表的一端進行插入,另一端進行刪除。
進行插入的一端稱為隊尾(rear),插入動作稱為進隊或入隊
進行刪除的一端稱為隊頭(front),刪除動作稱為出隊
佇列的性質:先進先出(first-in, first-out)
為了讓佇列可以迴圈使用,這裡我們提出了環形佇列
環形佇列:
當隊首指標front == maxsize - 1時, 再前進乙個位置就自動到0.
'''
topic: 佇列queue
author: blue
time: 2020-08-11
'''class
queue
:def
__init__
(self, size=
100)
: self.queue =[0
for _ in
range
(size)
] self.size = size
self.rear =
0# 隊尾指標
self.front =
0# 隊首指標
defpush
(self, element):if
not self.is_filled():
self.rear =
(self.rear +1)
% self.size
self.queue[self.rear]
= element
else
:raise indexerror(
"queue is filled."
)def
pop(self):if
not self.is_empty():
self.front =
(self.front +1)
% self.size
return self.queue[self.front]
else
:raise indexerror(
"queue is empty."
)# 判斷隊空
defis_empty
(self)
:return self.rear == self.front
# 判斷隊滿
defis_filled
(self)
:return
(self.rear +1)
% self.size == self.front
q = queue(5)
for i in
range(4
):q.push(i)
print
(q.is_filled())
print
(q.pop())
q.push(
4)
結果:
true
0
有興趣的讀者也可以試試python的內建佇列模組deque
from collections import deque
資料結構5 佇列
5.1簡介 佇列 queue 和堆疊一樣是一種有序鍊錶,屬於抽象資料型別。不同在於是先進先出 first in,first out,fifo 堆疊只需要乙個top指標指向堆疊頂端即可,但是佇列必須使用front和rear兩個指標分別指向佇列的前端和尾端。基本操作 1 create 建立空佇列 2 a...
資料結構(二) 佇列
一 佇列定義 佇列是限定在一端進行插入,另一端進行刪除特殊線性表。二 佇列基本操作 入隊出隊 三 佇列例題 1.例1 舞伴配對問題 分析 這一題是一道經典的取模運算,每一次將編號往前加一位,到達n就取模。include include include include int main return ...
資料結構 七 佇列
1 佇列需要具備的特性 佇列和棧的底層實現資料結構可以是 陣列 鍊錶,只不過在此基礎上,佇列和棧需要過載兩個函式 節點的插入與刪除函式。佇列只能從煉表頭刪除節點,從鍊錶末尾插入節點 2 示例 ifndef data struct queue h define data struct queue h ...