单选题 18.中缀表达式a*(b+c)一d的后缀表达式是( )。
【正确答案】 B
【答案解析】本题转化过程如图4—5所示。

由图4—5可以写出以下转化过程:
第一步:b+c→bc+(假设x=“bc+”)
第二步:a*x→ax*(假设y=“ax*”)
第三步:y—d→yd—
将xy还原后得到:abc+*d—。
补充知识点(1):中缀表达式转换成后缀表达式的另一种方式。
可以通过手工加上、除掉括号来将中缀表达式转换成后缀表达式,其过程如下:先根据中缀表达式的求值次序加上括号,将右括号用相应的运算符替换,再除掉所有的左括号。
例如,中缀表达式“5+2*(1+6) —8/2”转换成后缀表达式的过程如下:手工判断该表达式的计算过程。首先肯定是先计算2*(1+6),加上括号变为“5+(2*(1+6))—8/2”,再计算除法8/2,加上括号变为“5+(2*(1+6))— (8/2)”,接着进行加法运算,加上括号变为“(5+(2*(1+6)))一(8/2)”,最后再进行减法运算,加上括号变为“((5+(2*(1+6)))一(8/2))”。运算符和右括号的对应关系如图4.6所示,将右括号用对应的运算符替换,变为“((5(2(16+*+(8 2/一”,最后除掉所有左括号得到的后缀表达式为“5216+*+82/一”。