免費開始練習
普通考試 115年 [電信工程] 計算機概要

第 15 題

某程式產出一個資料序列,依 A、B、C 的順序(A 最先)輸入到一個空的堆疊(Stack),藉由推入(Push)、彈出(Pop)的動作以改變原本的資料順序,總共有幾種可能的輸出順序?
  • A 6 種
  • B 5 種
  • C 4 種
  • D 3 種

思路引導 VIP

想像你正在將三本書 A、B、C 依序放入一個狹窄的箱子裡。如果你希望最後拿出來的第一本書是 C(也就是箱子最底下的 A 和中間的 B 都還沒被拿出來過),那麼在拿完 C 之後,剩下的 A 和 B 還有選擇誰先誰後的餘地嗎?為什麼?

🤖
AI 詳解 AI 專屬家教

恭喜你精準地掌握了資料結構中**堆疊(Stack)**的核心邏輯!這道題目考查的是經典的「後進先出(LIFO, Last-In-First-Out)」原理,並結合了排列組合的限制條件,是檢驗演算法基礎非常好的切入點。

堆疊運算的組合約束

在處理這類問題時,我們可以觀察到,雖然三個元素 $n=3$ 的全排列共有 $3! = 6$ 種,但堆疊的特性會限制某些序列的產生。當一個元素被彈出(Pop)時,所有比它早進入堆疊且尚未彈出的元素,勢必會被「壓」在下方,並以相反的順序依序產出。以本題為例,若要讓 C 成為第一個輸出的元素,則 A 與 B 必須都已在堆疊中(且 B 在 A 之上),這意味著接下來的順序絕對只能是 B 然後才是 A。因此,序列 「CAB」 在堆疊邏輯下是不可能發生的,這也是唯一被排除的組合。

▼ 還有更多解析內容

🏷️ 相關主題

資料結構與演算法
查看更多「[電信工程] 計算機概要」的主題分類考古題