初考-統計資料處理大意115 年第 16 題單選題
下列那個演算法最適合使用佇列(Queue)資料結構實作?
A運算子優先順序解析
B函式呼叫與遞迴執行
C深度優先搜尋(DFS)
D廣度優先搜尋(BFS)正確答案
D正確答案
BFS 需要按層級逐一走訪節點,先進先出特性正好對應佇列(Queue)。
為什麼答案是 D
BFS 廣度優先搜尋按層級逐層走訪,先被加入的節點先被處理,完全符合 Queue 的 FIFO 特性,是佇列的經典應用。
載入中…
完整詳解
Pro · 無限重點 BFS 需要按層級逐一走訪節點,先進先出特性正好對應佇列(Queue)。
看到「層級」「先進先出 FIFO」→ 選 Queue;看到「回溯」「後進先出 LIFO」→ 選 Stack。
逐選項分析
A✕
運算子優先順序解析(如中序轉後序、運算式求值)需要暫存運算子等待配對,屬於後進先出 LIFO,用「堆疊 Stack」實作最合適。
B✕
函式呼叫與遞迴是典型「呼叫堆疊 call stack」的應用,後呼叫的函式先返回,為 LIFO 結構,用 Stack 實作。
C✕ 陷阱
DFS 深度優先搜尋要一路走到底再回溯,符合 LIFO 特性,用 Stack(或遞迴)實作。常與 BFS 成對出題,小心別搞反。
D✓ 正確
BFS 廣度優先搜尋按層級逐層走訪,先被加入的節點先被處理,完全符合 Queue 的 FIFO 特性,是佇列的經典應用。
Stack vs Queue 經典應用對照
| 資料結構 | 特性 | 典型應用 | 圖搜尋 |
|---|
| Stack 堆疊 | LIFO 後進先出 | 運算式解析、遞迴、回溯 | DFS |
| Queue 佇列 | FIFO 先進先出 | 排程、緩衝區、列印佇列 | BFS |
最容易把 DFS 和 BFS 的資料結構搞反!口訣:『深堆疊、廣佇列』——DFS 用 Stack(深度回溯像疊盤子),BFS 用 Queue(廣度擴展像排隊)。選項 C 就是反向陷阱。