逆波兰记法(Reverse Polish notation, RPN)是一种数学表达式表示方式,在逆波兰表达式中,所有的操作符位于操作数之后,也被称为
后缀表示法
。例如:3+4
的逆波兰记法为34+
。
逆波兰记法求值
逆波兰记法求值使用堆栈结构很容易实现,一般过程为:操作数入栈,遇到操作符时,操作数出栈,求值,并将结果入栈,重复此过程,结束后栈顶的值就是表达式的值。
逆波兰表达式: “2 6 2 / 4 + * 9 3 / -” <=> 2 *(6 / 2 + 4) - 9 / 3
读值 | 操作 | 栈中状态 |
---|---|---|
2 | 入栈 | 2 |
6 | 入栈 | 2,6 |
2 | 入栈 | 2,6,2 |
/ | 2,6出栈,计算 6 / 2,将结果3入栈 | 2,3 |
4 | 入栈 | 2,3,4 |
+ | 3,4出栈,计算3+4,将结果7入栈 | 2,7 |
* | 2,7出栈,计算2x7,将结果14入栈 | 14 |
9 | 入栈 | 14,9 |
3 | 入栈 | 14 |