普考申論題
106年
[資訊處理] 資料處理概要
第 二 題
📖 題組:
三、運算式(Expression)有三種表示方式:中序式(Infix)、前序式(Prefix)、後序式(Postfix)。
三、運算式(Expression)有三種表示方式:中序式(Infix)、前序式(Prefix)、後序式(Postfix)。
📝 此題為申論題,共 3 小題
小題 (二)
請將前序式 ++*AB/-CD-EFG 轉換為中序式及後序式。(10 分)
思路引導 VIP
面對運算式轉換題,建議考生優先聯想「堆疊(Stack)」的由右至左掃描法或繪製「二元運算樹(Binary Expression Tree)」。由右向左讀取前序式,遇到運算元即推入堆疊,遇到運算子則從堆疊彈出兩個運算元進行結合,此方法能有系統地避免括號邏輯混淆,並正確推導出中序與後序式。
小題 (一)
請將中序式 A+B*(C+D)+E/F 轉換為前序式及後序式。(10 分)
思路引導 VIP
解此類運算式轉換題,最穩定且不易出錯的方法是「全括號法」。先依據運算子優先權(括號 > 乘除 > 加減)將原式完全加上括號,接著將運算子移至對應括號的左側(即為前序式)或右側(即為後序式),最後去除所有括號即可得到正確解答。
小題 (三)
在堆疊(Stack)的操作中,會使用後序式的觀念,請說明其原理。(10 分)
思路引導 VIP
看到「後序式」與「堆疊」,應立刻聯想到計算機(特別是編譯器)評估數學運算式求值的經典演算法。答題時需先點出後序式的優勢(無括號、無優先權問題),接著詳細條列堆疊運算求值的標準流程(運算元 Push,運算子 Pop 並計算),最後以簡單實例佐證以獲取高分。