Q12.
若有一堆疊(Stack)的資料結構,PUSH(X)代表將暫存器X 的內容放入堆疊當中,POP(X)代表從堆疊取出一個數字放入暫存器X 中。假設暫存器A、B、C、D 的內容分別為20、30、40、50,則依序執行PUSH(A)、PUSH(B)、PUSH(C)、POP(A)、PUSH(D)、PUSH(B)、POP(A)、POP(B)後,暫存器B 中的內容為何?
電腦軟體設計共同科目 · 乙級 · Q12
難易度分析
3 / 5
本題要求考生在多步驟的操作序列中,精確模擬堆疊狀態的動態變化。由於涉及多次數值的壓入與取出,且需區分暫存器名稱與其存放內容的變更,增加了認知負荷與計算過程中的失誤風險。
正確答案:④50
④ 50:50 為正確答案。執行 PUSH(D) 將 50 壓入堆疊,之後再 PUSH(B) 將 30 壓入,此時堆疊由底至頂為 [20, 30, 50, 30]。POP(A) 取出 30 後,堆疊頂端為 50,故 POP(B) 將 50 放入暫存器 B。
錯誤選項解析
- ① 20:20 是暫存器 A 的初始值,也是堆疊最底部的元素。在整個操作過程中,該值始終留在堆疊底部,並未被 POP 到暫存器 B 中。
- ② 30:30 是暫存器 B 的初始值。但經過 PUSH(B) 將 30 壓入堆疊後,最後執行 POP(B) 時取出的是堆疊頂端的 50,而非原始的 30。
- ③ 40:40 是暫存器 C 的初始值,在第三次 PUSH(C) 後被壓入堆疊,但隨後在第一次 POP(A) 時已被取出並覆蓋到暫存器 A 中,與暫存器 B 無關。
Learning Tip
"本題核心考點為 堆疊的 LIFO(後進先出) 特性。解題關鍵在於逐步追蹤每次 PUSH 與 POP 後堆疊的狀態變化,並注意 POP 操作會覆蓋目標暫存器的原始值。常見陷阱是忽略 POP 會改變暫存器內容,誤以為暫存器維持初始值。"
學員答題分佈
①200%
②300%
③400%
④500%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
一連串的push(推入)與pop(取出)可改變一個序列的順序,例如原始序列為1,2,3,經由push,pop,push,push,pop,pop 操作後,將變成1,3,2 。若原始序列為1,2,3,4,5,6,經由相關操作後,可能產生的序列有那些?
X、Y、Z,三個符號依序壓入(Push)到堆疊(Stack)中,壓入過程中,在堆疊內的元素可隨時彈出(Pop)堆疊,下列的輸出中,何者不可能由堆疊中產生出來?
將資料1、2、3、4 依序分別經由堆疊(Stack)做排列,則下列何者為不可能之輸出?
將A×(B-C/(D+E))轉成後序式後,最少需要多大容量的堆疊(Stack)才能執行無誤?
假設有一個Postfix 運算式A B + C / C B + D * +,而其值為A=3,B=6,C=3,D=2 。該運算式執行之後,十位數為m,個位數為n,下列那些正確?