数据结构第三章—第三章(队列)

注:本章的考点说明都在第三章(栈)

这个过程需要有做题,并且自己在这个过程中一点一点的思考,才能比较深刻,如果光靠记结论,比较不可取。

注:对各种队列中队头和队尾各种作用,以及怎么判断,要烂熟于心。在一轮复习的时候,自己对这方面不太熟练,错题比较多,望后面复习的时候,先做自己错的题,然后再回顾知识点。

对各种操作,最好拿一张草稿纸写下:初始化、判队空、入队、出队。每个过程中,有比较连贯的脑海过程才能算掌握,若不行,必须再听课回归。(这章节要反复听课,这章可以多听,效率高一点)。

1.定义

定义:队列简称队,也是一种操作受限的线性表(“也”表明是同栈一起说的),只允许在表的一端插入,而在表的另一端进行删除。

操作过程:限定在队尾进行插入操作,在队头进行删除操作的线性表。

考题:栈和队列的主要区别是:插入、删除操作的限定不一样。

口诀:先进先出(FIFO

注:有时候题目直接用英文给出,也就是对应队列。

 在队列中:比较关注的是队头和队尾

2.代码实现:

 3.知识点

 四种代码说明:

队列的分类:

  1. 顺序队列:数组实现的话如果限制队头在数组下标为0的地方会使出队时后面的数据还要挪动位置,这样会继承数组的缺陷。更好地选择是让数组下标为零的位置作为队头,出队列的时候队头向右迭代,所以需要两个指针一个指向队头,一个指向队尾。

  1. 循环队列:上述操作的话会有一个假溢出现象(队头下标之前的位置为空)。改进方法是实现一个队列满了时队尾继续从下标为0开始迭代(前提是队头已不在下标为0位置)。如何判断循环队列是满了还是空呢?可设置标志变量,初始为0,满了时置为1。
  2. 链队列:采用链表实现由于表头出数据和插数据都比较方便,表尾仅插数据方便(通过判断结点下一个位置为空就能找到表尾,时间复杂度为0(1),而出数据麻烦。所以理应让表头做队列头,表尾做队列尾。

 循环过程:

 队空和队满的区分:

 4.链式队列

 考题:用链式存储方式的队列进行删除操作时需要:头尾指针可能都要修改。

知识点:

注:知识点非常多,我在一轮的时候只注重做题,有点割裂知识点,在第二轮的时候要将整个过程串一遍,把知识连贯起来。 

5.双端队列

 

 队列的运算/操作(自己一轮的时候比较忽视),这方面错的题比较多,希望回归的时候重点对这方面多花时间。

6. 应用

应用相当于将栈、队列、数组串了一遍。

在各自的方面可以分开总结,在二轮的时候要结合起来,一起总结。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值