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

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

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

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

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

 

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

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

 


第3章 栈和队列

文章目录

  • 第3章 栈和队列
    • 3.1 栈
      • 3.1.1 基本概念
        • 1.定义
        • 2.基本操作
        • 3.小结
      • 3.1.2 顺序栈
        • 1.代码实现
        • 2.基本操作
        • 3.共享栈
        • 4.小结
      • 3.1.3 链栈
        • 1.代码实现
        • 2.基本操作
        • 3.小结
    • 3.2 队列
      • 3.2.1 基本概念
        • 1.队列
        • 2.基本操作
        • 3.小结
      • 3.2.2 顺序队列
        • 1.代码实现
        • 2.基本操作
        • 3.循环队列
        • 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.中缀转后缀 (机算)
        • 7.中缀表达式的计算
        • 8.小结
      • 3.3.3 栈 - 递归
      • 3.3.4 队列 - 层序遍历
      • 3.3.5 队列 - 计算机系统中的应用
    • 3.4 特殊矩阵的压缩存储
      • 3.4.1 数组的定义
      • 3.4.2 数组的存储结构
      • 3.4.3 特殊矩阵
        • 1.对称矩阵
        • 2.三角矩阵
        • 3.三对角矩阵
        • 4.稀疏矩阵
      • 3.4.4 小结

3.1 栈

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

3.1.1 基本概念

1.定义

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

在这里插入图片描述


2.基本操作

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

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

  • ② 栈的基本操作

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


3.小结

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

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


3.1.2 顺序栈

1.代码实现

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


2.基本操作

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

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

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

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

  • ③ 出栈操作

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

  • ④ 读栈顶元素

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


3.共享栈

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


4.小结

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

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


3.1.3 链栈

1.代码实现

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


2.基本操作

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

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


3.小结

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


3.2 队列

3.2.1 基本概念

1.队列

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

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


2.基本操作

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


3.小结

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


3.2.2 顺序队列

1.代码实现

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


2.基本操作

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

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

  • ② 入队操作

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


3.循环队列

  • ① 概念

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

  • ② 入队

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

  • ③ 出队

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

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

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

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

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

  • ⑤ 补充

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

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

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

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

4.小结

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


3.2.3 链式队列

1.代码实现

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


2.基本操作

  • ① 初始化

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

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

  • ② 入队

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

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

  • ③ 出队

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

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

  • ④ 队列满

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


3.双端队列

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

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

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

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

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

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


4.小结

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

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


3.3 栈和队列的应用

3.3.1 栈 - 括号匹配

1.算法思想

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

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


2.代码实现

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


3.小结

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


3.3.2 栈 - 表达式求值

1.概念

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

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

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


2.中缀转后缀 - 左优先(手算)

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

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


3.后缀表达式的计算

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

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

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

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


4.中缀转前缀 - 右优先(手算)

  • 按照中缀表达式按右优先的运算符生效顺序去转成前缀

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

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


5.前缀表达式的计算

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

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


6.中缀转后缀 (机算)

1)举例一

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

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

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

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

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

7.中缀表达式的计算

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

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

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

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

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


8.小结

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

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


3.3.3 栈 - 递归

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

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

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

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

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

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

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

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

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

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


3.3.4 队列 - 层序遍历

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

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

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

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


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

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

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


3.4 特殊矩阵的压缩存储

3.4.1 数组的定义

自己看课本(略)

3.4.2 数组的存储结构

  • 一维数组

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

  • 二维数组

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

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


3.4.3 特殊矩阵

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

1.对称矩阵

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

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

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

  • ② 映射函数

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

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


2.三角矩阵

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

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

  • 数组大小和映射函数

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

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


3.三对角矩阵

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

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

  • 数组 -> 矩阵

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

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


4.稀疏矩阵

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

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


3.4.4 小结

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

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


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

你可能感兴趣的:(#,408,数据结构,数据结构,栈,队列,中缀转后缀,计算后缀表达式)