2.Queue.md
last update: 2025-06-09
Queue
是一種先進先出(FIFO, First In First Out)的資料結構,常用於模擬排隊或任務排程的場景。每個元素依照加入的順序被處理,最先加入的元素最先被移除。
一、Queue 的組成與限制
屬性
說明
head
指向佇列最前端的節點(即將被移除的元素)
tail
指向佇列最後端的節點(最後加入的元素)
size
當前佇列中的元素數量
max_size
佇列可容納的最大元素數量(可選)
二、基本節點結構(Python 範例)
class Node:
def __init__(self, value):
self.value = value
self.next = None
三、Queue 操作
1. 加入元素(enqueue)
def enqueue(self, value):
if self.has_space():
new_node = Node(value)
if self.is_empty():
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
self.tail = new_node
self.size += 1
else:
print("Queue is full!")
2. 移除元素(dequeue)
def dequeue(self):
if self.size > 0:
value = self.head.value
self.head = self.head.next
self.size -= 1
if self.size == 0:
self.tail = None
return value
else:
print("Queue is empty!")
3. 查看最前端元素(peek)
def peek(self):
if self.size > 0:
return self.head.value
else:
print("Queue is empty!")
四、輔助方法與屬性
def get_size(self):
return self.size
def has_space(self):
return self.max_size is None or self.size < self.max_size
def is_empty(self):
return self.size == 0
五、Queue 特性
先進先出(FIFO):最早加入的元素最早被移除
空間彈性:可設置最大容量限制
max_size
適用場景:排隊處理、任務排程、印表機任務佇列等
六、Queue vs Stack 比較
特性
Queue
Stack
操作順序
FIFO(先進先出)
LIFO(後進先出)
插入端
尾端
頂端
移除端
前端
頂端
適用場景
排隊、廣度優先搜尋
遞迴、深度優先搜尋
Queue 是基礎但實用的資料結構,常用於需要「順序處理」的場景。在實作時,可以用陣列、串列、或雙端佇列等結構實現,若需擴展可進一步學習 circular queue、priority queue 等變形。
Last updated