一、前中后缀表达式
二、表达式计算
前中后缀表达式
(1)中缀表达式
含义:就是我们最常见的普通表达式,操作符在操作数的中间。
如:
| 3 + 5=? | 3 + 5 + 6=? | 3 + 5 - 2=? |
| 3 + 6 * 2=? | 3 + 6 / 2=? | 3 * 6 + 2=? |
| (3 + 6) * 2 | (4 + 6) / 2 | (3 + 6 * 4) / 2 |
有几个注意点:在计算的时候需要注意优先级,"()" > "*/" > "+-"
(2)前缀表达式
前缀表达式又称波兰式,将运算符写在操作数的前面。
运算规律:
① 从右到左扫描表达式
② 遇到操作符则计算其右边的两个操作数,将这次的计算结果作为下次计算的操作数
(3)后缀表达式
后缀表达式又称逆波兰式,将其操作符写在操作数的后面。
运算规律:
① 相反,从左到右扫描表达式
② 相反,遇到操作符则计算其右边的两个操作数,将这次的计算结果作为下次计算的操作数。
(4)中缀转前后缀
实例:
表达式计算
中缀:1 + 2 * 3 - (4 + 5)
后缀:1 2 3 * + 4 5 + -
①定义一个操作数栈stack
②从左往右读取数据,遇到操作数,直接将其push到操作数栈d中。
③遇到操作符,直接从操作数栈中取出相应的操作数运算,将运算结果push到操作数栈d中。
④重复②③,直到所有数据处理完毕,操作数栈顶就是ans。
核心代码:
前缀表达式计算
中缀:1 + 2 * 3 - (4 + 5)
后缀:- + 1 * 2 3 + 4 5
其实就是换成从右到左读取数据:
①定义一个操作数栈stack
②从右往左读取数据,遇到操作数,直接将其push到操作数栈d中。
③遇到操作符,直接从操作数栈中取出相应的操作数运算,将运算结果push到操作数栈d中。
④重复②③,直到所有数据处理完毕,操作数栈顶就是ans。
中缀表达式计算



