根据运算符的位置
把a,b 不看作操作数,看作表达式
把中缀表达式 转换为 前缀表达式
把要转换的表达式 每一个子表达式 都用括号括起来,把运算符提到括号前面,最后删除所有括号
所加的括号不能影响原来的运算顺序
每对括号内都可以看成 表达式a 运算符 表达式b 这种形式
把每对括号内的运算符提到前面
把所有括号删掉
中缀表达式转为后缀表达式
转换方法一样 不同的是把运算符拿到后面
无论是原本就有的括号 还是后加的括号
最后得到的前缀/后缀表达式 都没有括号的
那么为什么可以丢到括号
对于一个中缀表达式,通过加括号 导致了不同的运算次序,
但是每一种运算次序都有其唯一的前缀/后缀表达式 与其对应
也就是说 对于不同的运算次序,我们只需要用不同的后缀/前缀表达式就可以表达 没必要在同一个后缀表达式上 加什么括号,来让其产生不同的运算次序
后缀转中缀
从左往右扫,两个表达式后面跟一个运算符 就用括号括起来并把运算符放在表达式的中间 ,而形成一个新的表达式 然后继续扫描下去
后面跟着两个表达式,但我们要的是两个表达式紧跟一个运算符
去掉多余的括号
后缀转前缀
从左往右,发现两个表达式紧跟一个运算符时 把它括起来 把运算符放在表达式的前面
去掉括号
网友评论