首页 > 代码库 > 中缀表达式转后缀表达式

中缀表达式转后缀表达式

写之前应该介绍一个厉害的波兰数学家--Jan Lukasiewicz(鲁卡谢维奇),他想到了一种不需要括号的后缀表达法,我们为了纪念他,把它称为逆波兰(Reverse Polish Notation,RPN)表示。

我们把平时所用的标准四则运算表达式,如:9+(3-1)×3+10/2,称为中缀表达式。

把9 3 1 - 3 * + 10 2 / +(此处由上一行的中缀表达式例子转化而来) 这种不需要括号表示的形式叫做后缀表达式,也是计算机非常喜欢的计算式。

转换规则:

  从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式。

  注意:从左到右遇到的左括号也要进栈。其它的按照规则进出栈。

  最核心的原理还是栈的后进先出,只是将符号作为进栈出栈的元素。

写于2014年12月24日。

中缀表达式转后缀表达式