波兰表达式(前缀表达式)
简介:波兰表达式(Polish Notation,RPN),也称为前缀表达式(Prefix Notation),是一种运算符前置的表达式(没有括号),它的运算符位于操作数之前。这与后缀表达式(Postfix Notation)的形式相反,后缀表达式的运算符位于操作数之后。
实现思路:
- 从右至左扫描表达式,将数字压入堆栈。(注意:虽然是从右往左,当计算顺序仍然是从左往右,所以前缀表达式在计算时是用次顶元素 op 栈顶元素)
- 如果遇到运算符,则弹出栈顶的两个数,用该运算符对它们做相应的计算(次顶元素 op 栈顶元素),并将结果入栈;例如:对于表达式 “- 1 2”,从右往左遍历,当遇到加号运算符时,将栈顶元素1与次顶元素2相减,并将结果-1压入堆栈。
- 重复步骤2直到表达式最左边。
- 将运算结果弹出栈并输出。