前缀、中缀、后缀表达式
简介
中缀表达式(正常的表达式)
\[(1+2)*3-4
\]
前缀表达式(运算符位于操作数之前)
\[-*+1234
\]
后缀表达式(运算符位于操作数之后)
\[12+3*4-
\]
前缀表达式计算
从右向左遍历,遇到数字的时候,将数字入栈,遇到运算符的时候,弹出栈顶两个数字运算,将运算结果入栈,直到剩下最后一个数字。
遍历元素 | 栈 | 备注 |
---|---|---|
4 | 4 | 4入栈 |
3 | 43 | 3入栈 |
2 | 432 | 2入栈 |
1 | 4321 | 1入栈 |
+ | 433 | 12出栈,作1+2=3入栈 |
* | 49 | 33出栈,作3*3=9入栈 |
- | 5 | 49出栈,作9-4=5入栈 |
后缀表达式计算
从左向右遍历,遇到数字的时候,将数字入栈,遇到运算符的时候,弹出栈顶两个数字运算,将运算结果入栈,直到剩下最后一个数字。
遍历元素 | 栈 | 备注 |
---|---|---|
1 | 1 | 1入栈 |
2 | 12 | 2入栈 |
+ | 3 | 12出栈,作1+2=3入栈 |
3 | 33 | 3入栈 |
* | 9 | 33出栈,作3*3=9入栈 |
4 | 94 | 4入栈 |
- | 5 | 94出栈,作9-4=5入栈 |