🏗️ 第 1 週:資料結構基礎(Data Structures)
8/150 數組模擬隊列的程式碼實作
— 用程式打造「排隊取號機」一、設計概念
建立一個 ArrayQueue 類別,模擬現實中的排隊行為:
- is_full():判斷是否已滿
- is_empty():判斷是否為空
- add_queue(n):加入資料
- get_queue():取出資料
- show_queue():顯示所有資料
- head_queue():查看隊頭資料
二、核心程式碼(Python)
class ArrayQueue:
def __init__(self, max_size):
self.max_size = max_size
self.arr = [0] * max_size
self.front = -1
self.rear = -1
def is_full(self):
return self.rear == self.max_size - 1
def is_empty(self):
return self.front == self.rear
def add_queue(self, n):
if self.is_full():
print("❌ 隊列已滿")
return
self.rear += 1
self.arr[self.rear] = n
def get_queue(self):
if self.is_empty():
raise Exception("❌ 隊列為空")
self.front += 1
return self.arr[self.front]
def show_queue(self):
if self.is_empty():
print("📭 空隊列")
return
for i in range(self.front + 1, self.rear + 1):
print(self.arr[i], end=" ")
print()
def head_queue(self):
if self.is_empty():
raise Exception("❌ 隊列為空")
return self.arr[self.front + 1]
三、快速測試
queue = ArrayQueue(3)
queue.add_queue(10)
queue.add_queue(20)
queue.add_queue(30)
queue.show_queue()
print(queue.get_queue())
print(queue.get_queue())
print(queue.get_queue())
queue.add_queue(40) # 會顯示已滿
四、重要觀察:假溢出
即使資料已全部取出,
rear 仍停在最後位置,
導致隊列無法再次使用。
👉 這稱為:假溢出(False Overflow)
五、重點整理
- 這是「一次性隊列」
- 可幫助理解隊列基本運作
- 真正實務需改成:環形隊列(Circular Queue)
✅ 一句話帶走
陣列隊列能幫助理解「排隊」邏輯,但實用系統必須使用環形隊列。














