王道数据结构课代表 - 考研数据结构 第三章 栈和队列 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对数据结构知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
 
关于对 栈和队列 章节知识点总结的十分全面,涵括了《王道数据结构》课程里的全部要点本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研数据结构“栈和队列”章节知识点的正确性与全面性
但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料
 
数据结构与算法 笔记导航🚥🚥🚥

  1. 🥬 第一章 绪论(无)
  2. 🥕 第二章 线性表
  3. 🥪 第三章 栈和队列 ⇦当前位置🪂
  4. 🍊 第四章 串-KMP(看毛片算法)
  5. 🍒 第五章 树和二叉树
  6. 🍀 第六章 图
  7. 🍚 第七章 查找(B树、散列表)
  8. 🧄 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序)
  9. 🍔 数据结构与算法 复试精简笔记 (未完成)
  10. 🎨 408 全套初复试笔记汇总 传送门 🏃‍🏃‍🏃‍
     

如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏 👏、求关注!👀
你必考上研究生!我说的,耶稣来了也拦不住!😀😀😀

在这里插入图片描述

 

精准控时:
如果不实际操作代码,只是粗略过一下知识点,需花费 40 分钟左右过一遍
这个40分钟是我在后期冲刺复习多次尝试的时间,可以让我很好的在后期时间紧张的阶段下,合理分配复习时间;
但是刚开始看这份博客的读者也许会因为知识点陌生、笔记结构不太了解,花费许多时间,这都是正常的。
重点!!!学习一定要多总结多复习!重复、重复、再重复!!!

食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
所以再第二遍复习中,我给每一张截图中标记了重点,以及每张图片上方总结了该图片对应的知识点以及自己的思考
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。

 


第3章 栈和队列

3.1 栈

在这里插入图片描述

3.1.1 基本概念

1.定义

在这里插入图片描述

在这里插入图片描述


2.基本操作
  • ① 对比线性表的基本操作

在这里插入图片描述

  • ② 栈的基本操作

在这里插入图片描述


3.小结

在这里插入图片描述

在这里插入图片描述


3.1.2 顺序栈

1.代码实现

在这里插入图片描述


2.基本操作
  • ① 初始化
  • top可以初始化-1,也可以初始化0。如果是0的话,下面的基本操作的一些细节就要修改,不过思路是一样的

在这里插入图片描述

  • 当top初始化为0,那么top的含义就是下一个入栈元素的位置
  • 当top初始化为-1,那么top的含义就是目前栈顶的位置
  • 顺序栈的第一次元素是,data[0],不是data[1];取0取1都可以的,只是为了规范
  • ② 进栈操作

在这里插入图片描述

  • ③ 出栈操作

在这里插入图片描述

  • ④ 读栈顶元素

在这里插入图片描述


3.共享栈

在这里插入图片描述


4.小结
  • 顺序栈的缺点:栈的大小不可变

在这里插入图片描述


3.1.3 链栈

1.代码实现

在这里插入图片描述


2.基本操作

在这里插入图片描述

在这里插入图片描述


3.小结

在这里插入图片描述


3.2 队列

3.2.1 基本概念

1.队列

在这里插入图片描述

在这里插入图片描述


2.基本操作

在这里插入图片描述


3.小结

在这里插入图片描述


3.2.2 顺序队列

1.代码实现

在这里插入图片描述


2.基本操作
  • ① 初始化
  • 对头、队尾指针都初始化为0,不是-1
  • 队空判断:rear == front

在这里插入图片描述

  • ② 入队操作

在这里插入图片描述


3.循环队列
  • ① 概念

在这里插入图片描述

  • ② 入队

在这里插入图片描述

  • ③ 出队

在这里插入图片描述

  • ④ 判断队空 —— 重点(多种方案)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • ⑤ 补充

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 求队列长度:(rear+n-front)%MAXSIZE(看情况,有时候不大一样)

4.小结

在这里插入图片描述


3.2.3 链式队列

1.代码实现

在这里插入图片描述


2.基本操作
  • ① 初始化

在这里插入图片描述

在这里插入图片描述

  • ② 入队

在这里插入图片描述

在这里插入图片描述

  • ③ 出队

在这里插入图片描述

在这里插入图片描述

  • ④ 队列满

在这里插入图片描述


3.双端队列

在这里插入图片描述

在这里插入图片描述

  • 经常考你一个输出序列是否合法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


4.小结

在这里插入图片描述

在这里插入图片描述


3.3 栈和队列的应用

3.3.1 栈 - 括号匹配

1.算法思想

在这里插入图片描述

在这里插入图片描述


2.代码实现

在这里插入图片描述


3.小结

在这里插入图片描述


3.3.2 栈 - 表达式求值

1.概念
  • 后缀表达式最经常被考察,前缀表达式比较刺毛!
  • 逆波兰表达式 = 后缀表达式
  • 波兰表达式 = 前缀表达式
  • 算数表达式:操作数 + 运算符 + 界限符

在这里插入图片描述

在这里插入图片描述


2.中缀转后缀 - 左优先(手算)
  • ① 在人们的视角里中缀表达式看起来更方便计算,但是对于计算机后缀表达式更适合
  • ② 注意:有时运算符的在中缀表达式中的生效顺序可以不唯一,导致后缀表达式不唯一
  • 例如下图中同一个式子,可以有两种生效顺序,但结果相同。
  • 故针对这一个问题,需要指定一个标准:左优先
  • 中缀转后缀:按照左优先的运算符生效顺序进行转换

在这里插入图片描述


3.后缀表达式的计算

上一小节介绍了“中缀转成后缀”的方法,接下来就是后缀表达式的计算问题了

  • ① 从左往右扫描后缀表达式
  • ② 扫描操作数入栈
  • ③ 扫描操作符,弹出两个栈顶元素,计算结果入栈
  • 思考:后缀转回中缀?
  • 还是从左往右扫描后缀表达式,具体步骤自己思考,和这个算法差不多(前者得到具体值,后者得到一个式子)

在这里插入图片描述

在这里插入图片描述


4.中缀转前缀 - 右优先(手算)
  • 按照中缀表达式按右优先的运算符生效顺序去转成前缀

在这里插入图片描述

在这里插入图片描述


5.前缀表达式的计算
  • 从右往左扫描,其他和上面类似
  • 注意:学完计算后缀和前缀,有一点容易搞错!
  • 后缀弹出两个操作数,先弹出的是右操作数
  • 而前缀先弹出的是左操作数

在这里插入图片描述


6.中缀转后缀 (机算)

1)举例一

  • 中缀转后缀:
  • ① 辅助栈,存储运算符
  • ② 从左往右扫描中缀表达式,此时有可能遇到三种情况:① 操作数;② 界限符;③ 运算符
  • ③ 遇到这三种情况的不同处理办法看下图了

在这里插入图片描述

2)举例二 - 遇到界限符的情况

  • “ ( ” 被弹飞了
  • 中缀扫描完了,依次将栈里的运算符弹出
  • !!!考试可能会考这个栈最少需要多大?

在这里插入图片描述

7.中缀表达式的计算
  • 如何在计算机中实现对中缀表达式的求值?
  • ① 计算机会先把中缀转后缀
  • ② 然后再计算后缀表达式
  • 结合:一边转换,一边计算 (故需要两个栈)

在这里插入图片描述

  • 中缀转后缀需要使用到运算符栈,计算后缀表达式需要用到操作数栈

在这里插入图片描述

在这里插入图片描述


8.小结

在这里插入图片描述

在这里插入图片描述


3.3.3 栈 - 递归

要理解 “递归算法” 和 “栈” 之间有什么本质联系!

  • 递归的过程实际上就是函数调用的过程

在这里插入图片描述

  • 递归 = 递归表达式 + 边界条件

在这里插入图片描述

  • 递归参数越多,空间复杂度越高

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


3.3.4 队列 - 层序遍历

  • 树实现层次遍历需要使用到队列

在这里插入图片描述

  • 图实现层次遍历需要使用到队列

在这里插入图片描述


3.3.5 队列 - 计算机系统中的应用

在这里插入图片描述

在这里插入图片描述


3.4 特殊矩阵的压缩存储

3.4.1 数组的定义

自己看课本(略)

3.4.2 数组的存储结构

  • 一维数组

在这里插入图片描述

  • 二维数组

在这里插入图片描述

在这里插入图片描述


3.4.3 特殊矩阵

在这里插入图片描述

1.对称矩阵

在这里插入图片描述

  • ① 数组大小:1 + 2 + 3 + …… + n;数组从0开始,故下标需要-1

在这里插入图片描述

  • ② 映射函数

在这里插入图片描述

在这里插入图片描述


2.三角矩阵
  • 什么是三角矩阵?答:比对称矩阵多了一个元素c

在这里插入图片描述

  • 数组大小和映射函数

    在这里插入图片描述

在这里插入图片描述


3.三对角矩阵
  • 矩阵 -> 数组:(3 * n - 2) - 1(-1是因为数组下标开始为0)

在这里插入图片描述

  • 数组 -> 矩阵

在这里插入图片描述

在这里插入图片描述


4.稀疏矩阵

在这里插入图片描述

在这里插入图片描述


3.4.4 小结

在这里插入图片描述

在这里插入图片描述


加油考研人!!!点赞的一定考得上!!!哈哈哈!

  • 33
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的clz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值