今天聊到了佇列(queue)這種資料結構,佇列和Day5所提到的堆疊常放在一起看,他們的操作方式類似,但特性稍微有一點點的不同。
佇列是一種先進先出的資料結構(FIFO, First-In-First-Out),與堆疊不同(FILO),來看看下面圖片,會更容易理解這個資料結構。
用生活上的例子來解釋,就是排隊的概念,當你在一間餐廳排隊,你是隊伍中的最後一位顧客,餐廳有空位時,會先叫隊伍前端第一位客人入座,而非最後一位。
和堆疊相同,可以使用陣列或串列操作佇列
FIFO特性的資料結構,會先處理最早的元素,主要使用下列兩種基本操作:
import queue
# 先入先出
q = queue.Queue()
q.put(1)
print(q.get())
q.put(2)
print(q.get())
q.put(3)
print(q.get())
# 後入先出
q1 = queue.LifoQueue()
q1.put(2)
print(q1.get())
q1.put(4)
print(q1.get())
q1.put(6)
print(q1.get())
# 優先順序
q2 = queue.PriorityQueue()
q2.put("a")
print(q2.get())
q2.put("b")
print(q2.get())
q2.put("c")
print(q2.get()) #會先出前面的資料
環狀佇列是一種環狀結構的佇列,最多使用(n-1)個空間。環狀佇列顧名思義就是一個環形的佇列,可以使用isQueueEmpty()查詢是否還有資料可取出?
Python關於佇列操作的延伸閱讀