表达式计算,它使得高级语言程序员可以使用与数学形式相一致的方式书写表达式,如ab+c/d-c(x+y)。计算机科学计算语言FORTRAN就因Formula Translator(公式翻译家)而得名。
后缀表达式的特点如下:
1. 后缀表达式的操作数与中缀表达式的操作数先后次序相同,而运算符的先后次序不同。
2. 后缀表达式中没有括号,而且运算符没有优先级。
3. 后缀表达式计算过程严格按照从左到右的顺序进行。
由于后缀表达式不需考虑运算符的优先级,因此计算较简单。计算过程为:从左到右依次扫描后缀表达式,遇到运算符,则与运算符前边连续两个操作数做运算。
后缀表达式:也叫逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。
实际意义:
1. 当有操作符时就计算,表达式并不是从右至左整体计算而是每次由中心向外计算一部分,这样在复杂运算中就很少导致操作符错误。
2. 堆栈自动记录中间结果,这就是为什么逆波兰计算器能容易对任意复杂的表达式求值。与普通科学计算器不同,它对表达式的复杂性没有限制。
3. 逆波兰表达式中不需要括号,用户只需按照表达式顺序求值,让堆栈自动记录中间结果;同样的,也不需要指定操作符的优先级。
4. 逆波兰计算器中,没有“等号”键用于开始计算。
5. 逆波兰计算器需要“确认”键用于区分两个相邻的操作数。
6. 机器状态永远是一个堆栈状态,堆栈里是需要运算的操作数,栈内不会有操作符。
7. 教育意义上,逆波兰计算器的使用者必须懂得要计算的表达式的含义。
二叉树的中序遍历对应——中缀表达式
二叉树的后序遍历对应——后缀表达式
从前向后扫描这个整数的各个位
如果遇到前面的数比它后面的数大就删掉
如果整个数已经是从小到大排列,就直接把末尾的数删掉
所以的删数过程如下:
第1次,删9,得834632178
第2次,删8,得34632178
第3次,删6,得3432178
第4次,删4,得332178
第5次,删3,得32178
第6次,删3,得2178
变化流程如下,第一步加上运算的(),变成
((a/(b+c))d)
第二步将运算符移动到对应的括弧后面。这个就是后缀这个名字的原因。
((a(bc)+)/d)
第三部去除了括号。
abc+/d