在对表达式进行处理时,我们通常的表达式都是中缀表达式,例如3+4 * 2,但是这种表达式仅对我们适合,对电脑更适合其他的方法,在编译系统中,对表达式的处理采用的是另一种方法,即将中缀表达式转变为后缀表达式,然后对后缀表达式进行处理,后缀表达式也成为“逆波兰式”,同样的,还有前缀表达式。
中缀表达式转化为其他两种:
1.中缀表达式转换为前缀表达式,就以3+4 * 2来说,可以先判断+号与*号的优先级,对他们加上括号
第一步: 3 + (4 * 2)
第二步: (3 + (4 * 2))
然后将他们的运算符一一提出
第三步: (3 + *4 2)
第四步: + 3 * 4 2
2.中缀表达式转化为后缀表达式,继续以3+4 * 2举例子,跟中转后相同,还是先将他们一步步括起来,只不过这次运算符是往后放的
第一步: (3 + (4 * 2))
第二步:( 3 + 4 2 *)
第三步: 3 4 2 * +
例题:
1.x+a*(y-b)-c/d,将其转化为前后缀表达式
*还是一样,先将他用括号括起来
第一步: x + (a * (y - b))- c / d
第二步: ( x + ( a * (y - b ))) - c / d
第三步: (( x + (a * (y - b))) - c / d)
然后就是提取运算符了
答案为:前缀- + x * a - y b / c d
后缀x a y b - * + c d / -