前言:
人是比较喜欢中缀式的,因为它符合人们的运算习惯;但是机器是不喜欢中缀式,它更喜欢后缀式,也就是逆波兰式。
逆波兰式的理解:
1.逆波兰式: ab35c-*+=
2.计算机计算过程:
- 策略:计算机从左到右进行扫描,遇到操作数入栈,遇到运算符,最靠近栈顶的两个元素出栈。
- 图示:
1.遇到操作数入栈
2.遇到运算符出栈
注意:逆波兰式的符号顺序就是运算顺序。
中缀式快速转化成逆波兰式:
步骤:
1.根据运算优先级加下划线
2.去掉步骤1中所加的下划线(中间运算符挪到两个操作数的后面)
简单中缀式的转化:b-3
中缀式 b-3 步骤1:加下划线
逆波兰式 b 3 - 步骤2:去下划线(运算符挪到两个操作数的后面)
操作数b 3 运算符-
复杂中缀式的转化:a=( (b-3)+ 6/(2+1)+8)*c
a=( (b-3)+ 6/(2+1)+8)*c //!!注意:此处的 ()仅表示运算顺序,不属于运算符
b 3 -
a=( (b-3)+ 6/ (2+1) +8)*c
b3- 2 1 +
a=( (b-3)+ 6/ (2+1) +8)*c
b3- 6 21+ /
a=( (b-3)+ 6/ (2+1) +8)*c
b3- 621+/ +
a=( (b-3)+ 6/ (2+1) +8)*c
b3-621+/+ 8 +
a=( (b-3)+ 6/ (2+1) +8 )*c
b3-621+/+8+ c *
a=( (b-3)+ 6/ (2+1) +8 )*c
a b3-621+/+8 + c * =
中缀式所得逆波兰式为a b3-621+/+8 + c * =
注意:上述仅是个人理解,如有错误,请雅正。