3.Stack.md
last update: 2025-06-09
Stack
是一種後進先出(LIFO, Last In First Out)的資料結構,常用於處理需要「反向順序」的任務,例如函式呼叫堆疊、字元反轉、遞迴展開等。
一、Stack 的基本結構
屬性
說明
top
指向目前堆疊頂端的節點
size
當前堆疊中的元素數量
max_size
堆疊可容納的最大元素數量(可選)
二、基本節點結構(Python 範例)
class Node:
def __init__(self, value):
self.value = value
self.next = None
三、Stack 操作
1. 加入元素(push)
def push(self, value):
if self.has_space():
new_node = Node(value)
new_node.next = self.top
self.top = new_node
self.size += 1
else:
print("Stack is full!")
2. 移除元素(pop)
def pop(self):
if self.size > 0:
value = self.top.value
self.top = self.top.next
self.size -= 1
return value
else:
print("Stack is empty!")
3. 查看頂端元素(peek)
def peek(self):
if self.size > 0:
return self.top.value
else:
print("Stack 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
五、Stack 特性
後進先出(LIFO):最後加入的元素最先被取出
結構簡單:只操作堆疊頂端即可
適用場景:遞迴展開、括號匹配、Undo 操作等
六、Stack vs Queue 比較
特性
Stack
Queue
操作順序
LIFO(後進先出)
FIFO(先進先出)
插入端
頂端
尾端
移除端
頂端
前端
適用場景
遞迴、字元反轉、括號驗證
排隊、排程、輸出緩衝器
Stack 是一種輕量且實用的資料結構,尤其適合處理需要暫存與反向處理的邏輯。進一步可延伸至雙向堆疊、限制容量堆疊(Bounded Stack)等變化結構。
Last updated