我们平时见到的算式都是中缀表達式如:
二、使用中缀表达式实现计算机(加减乘除)
初始化两个栈,一个数栈(numStack)存放数一个符号栈(operStack)存放符号。
使用栈完成表达式計算思路:
- 通过一个 index 值(索引)来遍历我们的表达式
- 如果我们发现是一个数字, 就直接入数栈
- 如果发现扫描到是一个符号, 就分如下情况
1 如果发现当前的符号栈为空,就直接入栈
2. 如果符号栈有操作符就进行比较,如果当前的操作符的优先级小于或者等于栈中的操作符, 就需要從数栈中pop出两个数,在从符号栈中pop出一个符号进行运算,将得到结果入数栈,然后将当前的操作符入符号栈 如果当前的操作符的优先級大于栈中的操作符, 就直接入符号栈.
- 当表达式扫描完毕就顺序的从 数栈和符号栈中pop出相应的数和符号,并运行.
- 最后在数栈只有一个数芓就是表达式的结果