类似于 1*2-3+4-(5-6)-2/4 的式子,我们称为算术表达式。下面我们利用栈这种数据结构来解析它,即用栈来辅助计算算术表达式。
首先我们得明确计算规则:
- 先左后右:从左算到右
- 先乘除,后加减
- 先括号内,后括号外
原理:
- 使用两个栈来存储读入的字符:数字栈和符号栈
- 读入数字,则压入数字栈
- 读入符号,则把当前符号栈顶的符号与读入的符号进行优先级比较。若当前符号栈顶符号的优先级小,则继续把符号压入符号栈;若当前读入符号的优先级小,则数字栈依次出栈两个数,加上符号栈顶的符号,构成一算术表达式,通过计算得出结果,把结果压入数字栈。
- 当读入界限符或符号栈弹出界限符,如#,运算结束,数字栈弹栈,即最后的表达式值。
难点:
1、优先级数组priority的理解是难点。
| + | - | * | / | ( | ) | # | |
| + | 1 | 1 | 2 | 2 | 2 | 1 | 1 |
| - | 1 | 1 | 2 | 2 | 2 | 1 | 1 |
| * | 1 | 1 | 1 | 1 |

本文介绍了如何使用栈数据结构解析算术表达式,遵循先乘除后加减、先括号内后括号外的规则。通过数字栈和符号栈,对输入的数字和运算符进行处理,形成有效的计算过程。当遇到界限符或符号栈弹出界限符时,运算结束,最终数字栈的结果即为表达式的值。
最低0.47元/天 解锁文章
1375





