后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。
中缀表达示:就是我们平常写的表达示,运算符号位于运算数之间。
1 |
a+b*c-d/e |
如果用后缀表达示改写上面的中缀表达示如下:
1 |
abc*+de/- |
为什么要后缀表达示?
就是为了方便计算机计算。这么讲不怎么能感觉的到,写个实际计算的例子来说明。
后缀表达示:6 2 /3-4 2 * + =
计算方法:先读6 再读2,再读/除法,就可运算
6/2 = 3;结果3写入再读3,再读-减法,运行3-3=0;
结果0写入,读4读2读*乘法,运算4*2=8;将结果8写入,读+加法,运算0+8=8;
画个计算图示大家应该会更清楚的看明白
后缀表达示求值方法策略:
从左向右“扫描”,逐个处理运算数和运算符号
遇到运算数如何处理,记录下来,遇到运算符号后,取出刚记录的两个数进行运算。
注:数据记录选用什么样的容器比较好?分析上面的计算方法,可以看出数据是“先进后出”,这样可以选用堆栈数据结构(stack)。