栈,数组模拟栈,链表模拟栈,栈实现综合计算器(中缀表达式实现)_韩顺平听课笔记
30.栈的应用场景和介绍
栈的应用场景:


栈的介绍:


31.栈的思路分析和代码实现
数组模拟栈思路分析:

数组模拟栈的具体实现:
- 栈的构造,栈满,栈空

- 出栈,入栈

- 显示栈的情况(遍历,从栈顶到栈底)

32.栈的功能测试和小结

练习:用链表模拟栈
33.栈实现综合计算器思路

34.栈实现综合计算器代码1(中缀表达式)
- 返回运算符优先级

- 判断是不是一个运算符

- 计算方法

- 定义两个栈结构

-
增加查看栈顶的方法,不弹出值
![]()
-
当前运算符优先级小于符号栈栈顶数据的操作

- 当前运算符优先级大于符号栈栈顶数据,以及栈顶为空的操作

-
如果是数字,就入栈(存放的是字符'1'需要转换处理ASCLL码)
-
判断是否扫描完输入的表达式
![]()
-
表达式扫描完毕,顺序从数栈,符号栈中弹出数和符号,并运算

问题:
- 无法进行多位数的计算比如90+2(因为代码是,单字符扫描)
- 思考如何解决多位数的计算
35.栈实现综合计算器代码2(中缀表达式)
解决多位数的计算问题思路:
- 处理数时,判断index下一位,是数就进行扫描,是符号才入栈
- 定义一个字符串变量keepNum,用于接收
- 如果接收字符变量ch已经是表达式的最后一位,则直接入栈

- 增加如果接收字符变量ch已经是表达式的最后一位,则直接入栈的判断代码:

练习:给表达式加上小括号



浙公网安备 33010602011771号