堆疊是一種由下往上的線性結構,它就像一個桶子,所有資料皆從同一端(頂端)進入與離開,因此必須遵守【後進先出LIFO】原則 正因如此,無法讀取中間或底層的資料,必須先把頂端的資料移走,才能知道中間或底層資料的內容
- 資料的進入過程稱為Push(推入),資料由下而上疊起來
- 資料的離開過程稱為Pop(彈出),頂端的資料必須先移走,才能取得底下的資料
- 只查看頂端資料的過程稱為Peek
使用堆疊的好處在於 Push、Pop、Peek的複雜度都是O(1)
應用
| 場景 | 為什麼用 Stack |
|---|---|
| 函式呼叫 / 遞迴 | 每次呼叫壓入,回傳時彈出,天然 LIFO |
括號匹配 ()[]{} | 遇到左括號 push,遇到右括號 pop 比對 |
| 瀏覽器上一頁 | 每次跳頁 push,按返回鍵 pop |
| 復原 Undo 功能 | 每個操作 push,Undo 就 pop |