五、考研数据结构笔记——栈与队列的应用

一、应用一:栈在括号中的应用

1.1 问题描述

一般的写一个算数表达式,看看括号是否是匹配的。

1.2 算法思路

  • 初始设置一个空栈,顺序读入括号
  • 若是左括号压入栈中。
  • 若是右括号,看是否与栈顶的左括号匹配,
    • 若匹配,则弹出栈顶左括号
    • 若不匹配,则算法结束。

1.3 手算

在这里插入图片描述

在这里插入图片描述

二、应用二:栈在表达式中的应用

2.1 问题描述

计算机中常常会把一个表达式转换为前缀表达式或者后缀表达式,便于利用栈进行计算

2.2 前中后缀表达式

  • 中缀表达式a + b运算符在数字之间,也就是普通的我们经常写的表达式。
  • 后缀表达式a b +运算符在数字之后,根据中缀表达式进行变换而来
  • 前缀表达式+ a b运算符在数字之前,根据中缀表达式进行变换而来

2.3 考法一:前中后缀表达式之间转换(重点)

  • 通常考试会给一个中缀表达式,写出它的前缀表达式或者后缀表达式。
  • 中缀表达式转后缀表达式原则:数字集合在左优先,也称左优先原则。
  • 中缀表达式转前缀表达式原则:数字集合在右优先,也称右优先原则。

在这里插入图片描述

2.4 考法二:后缀表达式如何计算

  • 通常考试会给一个后缀表达式,写出其计算结果
  • 计算步骤
    • ①从左到右遍历表达式
    • ②扫描到数字压入栈中
    • ③扫描到操作符弹出栈顶两个元素Y和X
    • ④将弹出的两个数和操作符进行计算 ,XY(一定要注意最上面的是Y其次到X)
    • ⑤将计算结果压入栈中,继续扫描。

在这里插入图片描述

2.5 代码

应用三:栈在递归中的应用

  • 类似于俄罗斯套娃,一层接着一层循环。但有两个条件,需要递归表达式(递归体)和边界条件(递归出口)。

  • 典型的就是斐波那契数列,还有树的遍历都会涉及到。读的懂就可以。不懂可以再看看视频。初次理解肯定有点难。

  • 斐波那契数列

在这里插入代码片

应用四:队列在层序遍历中的应用

4.1 问题描述

二叉树的遍历有前序遍历,中序遍历,后序遍历,层序遍历。其中层序遍历中就需要用到队列。

4.2 算法步骤

  • ① 根节点入队
  • ② 若队空(所有结点都已处理完毕),则遍历结束;否则执行步骤③
  • ③ 队列中第一个结点出队,并访问之。若有左孩子,左孩子入队;若有右孩子,则将右孩子入队,返回②。
    在这里插入图片描述
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值