中缀表达式就是我们正常使用的那种,例如:a+bc
后缀表达式就是abc+;
为什么要有中缀表达式和后缀表达式呢?
因为中缀表达式便于人们的理解与计算,但是后缀表达式更方便计算机的运算(如二叉树、堆栈的方法计算),因此在读取一个中缀表达式后,将其转化为后缀表达式更有利于计算
中缀表达式转后缀表达式,假设我们需要转化的中缀表达式为:
a + b * c + ( d * e + f ) * g
其转换成后缀表达式则为
a b c * + d e * f + g * +
使用括号法,转换过程如下
1、根据运算符的优先级对中缀表达式加括号(有几个运算符就有几对括号)(原本有的括号不用加)
式子变成:( ( a + ( b * c) ) + ( ( ( d * e ) + f ) * g ) )
2、转换前缀与后缀表达式
1)前缀:把运算符号移动到对应的括号前面
则变成:+ ( + ( a * ( b c) ) * ( + ( * ( d e ) f ) g ) )
把括号去掉:+ + a * b c * + * d e f g 即为前缀表达式
2)后缀:把运算符号移动到对应的括号后面
则变成拉:((a(bc))+(((de)f)+g))+
把括号去掉:abc+de*f+g *+ 即为后缀表达式
案例
A.x 5 y+*a/b-
B.x 5 ya b*+/-
C.-/*x+5 ya b
D.x 5*y+a/b-
思路: