中缀表达式 A+B*(C-D)-E/F 所对应的后缀表达式为 ABCD-*+EF/-
我在学习过程中总结了三种方法,以我个人觉得难易程度从高到低排序,当然我建议按顺序阅读,更有利于明白转换原理
1.利用栈
基本原则:由左至右依次扫描中缀表达式,其中
- 不属于符号直接输出
- 符号入栈
- 如果是左括号,直接入栈
- 如果是右括号,右括号会匹配走左括号,()一起不在栈内。在右括号拐走左括号之前,应将()内数据出栈输出
- 如果是“ + - * / ”等符号,栈顶符号的优先级若大于等于即将入栈的符号,则输出栈顶符号;再将新的栈顶符号与即将入栈的符号进行优先级比较
- 栈内若有剩余符号,则依次出栈输出
2.加括号法
本方法包括三步:加括号,移号,去括号
②是在表达式①的基础上加括号
③的每一行都是重复移号和去括号这两步
我用不同颜色的笔标明了符号对应的括号颜色,需要注意的是,相同颜色的符号应该移到同颜色的括号的后边
3.从心法
这个是我在上学的时候发现的超简单的方法,猴子看了都说内行