栈实现综合计算器
-
需求
- 使用栈完成计算一个表达式的结果
- 表达式为:7*2*2-5+1-5+3-4=?
-
分析
-
图示
-
思路分析
-
通过一个index值(索引),来遍历我们的表达式。
-
如果我们发现是一个数字,就直接入栈
-
如果我们发现扫描到是一个符号,就分如下情况
- 如果发现当前的符号栈为空,就直接入栈。
- 如果符号栈有操作符,就进行比较,如果当前的操作符的优先级小于或者等于栈中的操作符,这是就需要从数栈中pop出两个数,再从符号栈中pop出一个符号,进行运算,将得到的结果,入数栈,然后将当前的操作符入符号栈。
- 如果当前的符号栈优先级大于栈中的操作符,就直接入符号栈
-
当表达式扫描完毕,就顺序的从数栈和符号栈中pop出相应的符号,并运行。
-
最后,在数栈只有一个数字,就是表达式的结果。
-
现在对结果进行验证,使用3+2*6-2=?这个式子进行验证
-
代码实现
-
上面代码有一个局限性,就是只能计算一位的,如果某一个数换成2位或者两位以上,那么就会就处理不了。就是如何处理多位数的问题。
-
关键修改扫描数那块
-
-
-