中缀表达式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/一”。