栈,数组模拟栈,链表模拟栈,栈实现综合计算器(中缀表达式实现)_韩顺平听课笔记

30.栈的应用场景和介绍

栈的应用场景:

栈的介绍:

31.栈的思路分析和代码实现

数组模拟栈思路分析:

数组模拟栈的具体实现:

  • 栈的构造,栈满,栈空

  • 出栈,入栈

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

32.栈的功能测试和小结

练习:用链表模拟栈

33.栈实现综合计算器思路

34.栈实现综合计算器代码1(中缀表达式)

  • 返回运算符优先级

  • 判断是不是一个运算符

  • 计算方法

  • 定义两个栈结构

  • 增加查看栈顶的方法,不弹出值

  • 当前运算符优先级小于符号栈栈顶数据的操作

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

  • 如果是数字,就入栈(存放的是字符'1'需要转换处理ASCLL码)

  • 判断是否扫描完输入的表达式

  • 表达式扫描完毕,顺序从数栈,符号栈中弹出数和符号,并运算

问题:

  • 无法进行多位数的计算比如90+2(因为代码是,单字符扫描)
  • 思考如何解决多位数的计算

35.栈实现综合计算器代码2(中缀表达式)

解决多位数的计算问题思路:

  • 处理数时,判断index下一位,是数就进行扫描,是符号才入栈
  • 定义一个字符串变量keepNum,用于接收
  • 如果接收字符变量ch已经是表达式的最后一位,则直接入栈

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

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

posted @ 2021-09-04 16:38  CH0701  阅读(71)  评论(0)    收藏  举报