中缀转后缀例子:8-(3+5)*(5-6/2)的后缀表达式是8 3 5 + 5 6 2 / - * -
表达式生成过程:
1)8 3 5. |#-(+
2)8 3 5.+ 5 6 2 |# - * ( - /
3)8 3 5.+ 5 6 2 / - |# - *
4)8 3 5.+ 5 6 2 / - * - |#
中缀表达式转为后缀表达式规则如下:
设操作符s,初始化为空栈,压入优先级最低的操作符‘#’。
对中缀表达式从左向右扫描:遇操作数,直接写出来;遇操作符(记作w),分以下情况,直至表达式扫描完毕。
1)w为一般操作符(+,-,*,/),要与栈顶操作符比较优先级,若w优先级高于栈顶操作符,则入栈;否则,栈顶运算符退栈到结果上,w再与新栈顶操作符作上述比较处理,重复(1),直至w优先级高时入栈
2)w为左括号,w入栈
3)w为右括号,操作符栈依次退栈并进入到结果,直到碰到左括号为止,左括号退栈不进入结果,右括号也丢掉,达到结果中消除括号的目的。
4)w为‘#’,表示中缀表达式结束,操作符栈中元素依次退栈进入到结果,直至碰到‘#’,退栈,整个操作结束。
这里,再介绍一种简单方法。中缀表达式转为后缀表达式有三步:
首先,将中缀表达式中所有的子表达式按计算规则用嵌套括号括起来;其次,顺序将每对括号中的运算符移到相应括号的后面;最后,删除所有括号。
例如:1.加括号:(8—((3+5)*(5-(6/2))))
2.将运算符移到相应的括号后:(8((35)+(5(62)/)-)*)—
3.删除括号:835+562/—*—
同样可将中缀转为前缀,差别是第二步,即将运算符移至相应的括号左侧。
1、对于表达式来说,可以画树,前缀-〉前序;中缀-〉中序;后缀-〉后序。
2、还可以,就根据平时的计算,只不过后缀就把符号放字母后面,把这块看成一个整块,然后继续计算,符号放后;前缀反之亦然。
3、还有一个检查的小妙招,就是括号后是操作符号优先次序一直上升,用这招检查选择题超快。
4.后缀表达式是运算符写在对应的操作数的后面,注意,运算数的顺序是不变的。