地方政府公務人員四等-資訊處理類科計算機概要108 年第 25 題單選題
文字編輯器(如 Microsoft Word、記事本等)通常都提供復原(Undo)功能,供使用者取消當前的編輯操作,並復原至上一次的文字狀態。下列各種資料結構中,何者最適於儲存文字狀態的改變歷程,以實現文字編輯器的復原功能?
A雜湊表(Hash Table)
B佇列(Queue)
C堆疊(Stack)正確答案
D樹(Tree)
C正確答案
Undo 需要「最後做的最先取消」,符合 LIFO 特性的堆疊是最佳資料結構。
為什麼答案是 C
堆疊是 LIFO(後進先出),每做一個動作就 push 進去,Undo 時 pop 出最上層(最近)的動作,完美對應「復原上一步」的需求。
載入中…
完整詳解
Pro · 無限重點 Undo 需要「最後做的最先取消」,符合 LIFO 特性的堆疊是最佳資料結構。
看到「復原/回到上一步/最後先處理」→ 直接選 Stack(LIFO)。
逐選項分析
A✕
雜湊表用於「快速查找鍵值對」,例如字典、索引。它沒有「順序」概念,無法記錄操作的先後歷程,不適合 Undo。
B✕ 陷阱
佇列是 FIFO(先進先出),像排隊一樣先做的先出。但 Undo 要取消的是「最後一個動作」,順序剛好相反,常被誤選要小心。
C✓ 正確
堆疊是 LIFO(後進先出),每做一個動作就 push 進去,Undo 時 pop 出最上層(最近)的動作,完美對應「復原上一步」的需求。
D✕
樹狀結構適合階層式資料(如檔案系統、DOM),雖然有些進階編輯器用樹支援分支 Undo,但就「基本復原功能」而言過於複雜,非最適選擇。
四大資料結構特性與典型應用
| 結構 | 存取特性 | 典型應用 | 是否適合 Undo |
|---|
| 雜湊表 | Key-Value 查找 O(1) | 字典、索引、快取 | ✗ 無順序 |
| 佇列 Queue | FIFO 先進先出 | 列印排程、BFS | ✗ 順序相反 |
| 堆疊 Stack | LIFO 後進先出 | Undo、函式呼叫、括號配對 | ✓ 最適合 |
| 樹 Tree | 階層關聯 | 檔案系統、DOM、搜尋樹 | △ 過於複雜 |
最容易誤選 B 佇列。佇列和堆疊都是線性結構,但順序完全相反。Undo 要取消「最後一個」動作,對應 LIFO 的 Stack;若選 Queue 會變成取消「最早」的動作,邏輯顛倒。