30.栈的应用场景和介绍
栈的应用场景:
栈的介绍:
31.栈的思路分析和代码实现
数组模拟栈思路分析:
数组模拟栈的具体实现:
- 栈的构造,栈满,栈空
- 出栈,入栈
- 显示栈的情况(遍历,从栈顶到栈底)
32.栈的功能测试和小结
练习:用链表模拟栈
33.栈实现综合计算器思路
34.栈实现综合计算器代码1(中缀表达式)
- 返回运算符优先级
- 判断是不是一个运算符
- 计算方法
- 定义两个栈结构
-
增加查看栈顶的方法,不弹出值
-
当前运算符优先级小于符号栈栈顶数据的操作
- 当前运算符优先级大于符号栈栈顶数据,以及栈顶为空的操作
-
如果是数字,就入栈(存放的是字符'1'需要转换处理ASCLL码)
-
判断是否扫描完输入的表达式
-
表达式扫描完毕,顺序从数栈,符号栈中弹出数和符号,并运算
问题:
- 无法进行多位数的计算比如90+2(因为代码是,单字符扫描)
- 思考如何解决多位数的计算
35.栈实现综合计算器代码2(中缀表达式)
解决多位数的计算问题思路:
- 处理数时,判断index下一位,是数就进行扫描,是符号才入栈
- 定义一个字符串变量keepNum,用于接收
- 如果接收字符变量ch已经是表达式的最后一位,则直接入栈
- 增加如果接收字符变量ch已经是表达式的最后一位,则直接入栈的判断代码:
练习:给表达式加上小括号