既然容易忘记就记录一下吧~~
我好菜呀
为了保证最后结果为数字栈的栈顶,把字符串的前后加上个(),为了防止中间出现)多于(的现象,向字符串左边假如和字符串同样长度的(
- 开两个栈,一个存储操作符,一个存储数字
- 当前字符为数字,记录下来存储到栈中
- 当前字符为操作符,分情况讨论
- 为’(‘ 压如操作符栈
- 为+ 判断操作符栈顶是否为( ,如果不是就一直把栈顶操作符拿出来与数字栈中的两个数进行操作,完毕后压入数字栈
- 为- 特殊判断是不是为负数的前导符,是的话就把后面的数字计算出来,压入数字栈, 如果-后面为括号就把-1压入数字栈,并且把“*” 压数操作符栈, 都不是 的话就是运算符直接 做与+相同的操作。
- 为或者/就把操作符栈顶的元素是/^ 的进行操作
- 为^ 就把 栈顶为^的进行操作
- 为)就把栈顶元素操作指导遇见(