阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 專技高考_資訊技師:資料結構與資料庫及資料探勘#117644
科目:資料結構與資料庫及資料探勘
年份:112年
排序:0

題組內容

一、假設算術運算元(Operator)的優先次序(Precedence)與結合性 (Associativity)如下:
655d5927bed75.jpg
 給定中序(Infix)運算式:x - y /(6 * z)+ 8 * p ^ q ^ r

申論題內容

(一)寫出它的後序(Postfix)運算式。 (10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

在轉換給定的中序(Infix)運算式 x - y / (6 * z) + 8 * p ^ q ^ r 到後序(Postfix)運算式時,我們會按照運算元的優先次序(Precedence)和結合性(Associativity)處理每個運算元。
以下是轉換過程:
根據給定的優先次序和結合性,指數運算符(^)具有最高的優先級,並且其結合性是從右到左。
接著是乘除(* /)運算符,其優先級次之,且結合性是從左到右。
加減(+ -)運算符優先級最低,結合性也是從左到右。
括號(())用來明確指定運算的順序,括號內的運算應先處理。
應用這些原則,我們可以逐步構建後序運算式。在這個過程中,遇到運算符時,我們會根據它的優先次序和結合性決定是否應該從運算符棧中彈出其他運算符。
這裡是轉換的步驟:
從左至右掃描中序運算式。
遇到操作數 x,y,6,z,8,p,q,r 直接輸出。
遇到乘除運算符或加減運算符時,彈出所有優先級更高或相同且具有從左至右結合性的運算符,然後將該運算符壓入棧。
遇到指數運算符時,彈出所有優先級更高或相同且具有從右至左結合性的運算符,然後將該運算符壓入棧。
如果遇到左括號,則將其壓入棧。
如果遇到右括號,則將棧中的運算符彈出,直到遇到左括號為止,括號內的運算符不輸出。
轉換結果為後序運算式是:x y 6 z * / - 8 p q r ^ ^ * +
這樣,後序表達式就保留了原始中序表達式的所有運算優先規則,而無需括號。