后缀表达式/逆波兰表达式

后缀表达式/逆波兰表达式

运算表达式的种类

  • a + b:中缀表达式 (Infix Notation),原因是运算符号在两个运算对象的中间。
  • + - a * b c d:前缀表达式 (Prefix Notation),运算符在运算对象前面,又称为波兰表达式。
  • a b c * - d +:后缀表达式 (Prefix Notation),运算符在运算对象后面,又称为逆波兰表达式。

后缀表达式的优点

  • 相较于前缀表达式更易于转换,最左边一定为数字
  • 不用括号,依靠运算顺序确定运算符的优先级
  • 更符合计算机的计算方式。计算机通过从左至右读取后缀表达式,就可以将遇到的运算对象压入栈,在遇到运算符时就弹出两个运算对象,完成计算,再将结果压入栈。最后留在栈中的就是计算结果。

中缀表达式转换为后缀表达式的方法

a + b * c - (d + e)

  1. 按照运算符的优先级对所有的运算单位加括号。

    ((a + (b * c)) - (d + e))

  2. 转换中缀与后缀表达式后缀:把运算符号移动到对应的括号后面。

    ((a (b c) * ) + (d e) + ) -

  3. 把括号去掉,记得到了后缀表达式

    a b c * + d e + -

可以发现,后缀表达式是不需要括号来调整运算优先级的。

你可能感兴趣的:(后缀表达式/逆波兰表达式)