后缀表达式的定义
- 实例(中缀转后缀):
5+4=>5 4 +
1+2*3 => 1 2 3 * +
8+(3-1) * 5 => 8 3 1-5 *+ - 中缀表达式符合人类的阅读和思维习惯。
- 后缀表达式符合计算机的“运算习惯”
- 在扫描中,若遇到一个操作数,则把它压人堆栈。若遇到一个操作符,则将其与栈顶的操作数相匹配。把这些操作数弹出栈,由操作符执行相应的计算,然后将计算结果压人操作数栈。
中缀转后缀算法:
遍历中缀表达式中的数字和符号:
对于数字: 直接输出4
对于符号:
左括号: 进栈
运算符号:与栈顶符号进行优先级比较+
若栈顶符号优先级低: 此符合进栈(默认栈顶若是左括号, 左括号优先级最低)-
若栈顶符号优先级高: 将栈顶符号弹出并输出,之后进栈
右括号: 将栈顶符号弹出并输出,直到匹配左括号。
遍历结束: 将栈中的所有符号弹出并输出
计算机是如何基于后缀表达式计算的?。
- 例如:831-5*+ 的计算过程如下:
- 1.遍历后缀表达式中的数字和符号。
- 2.对于数字:进栈
- 对于符号:
-
- 从栈中弹出右操作数。
-
- 从栈中弹出左操作数。
-
- 根据符号进行运算。
-
- 将运算结果压入栈中,
- 遍历结束:栈中的唯一数字为计算结果。