温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
下面我们继续来讲解队列呃的实现方式,那刚才我们讲过,队列呢,可以用数组来模拟,也可以用链表来实现,那现在呢,我们先看数组的方式对不对?那首先我们看啊,队列本身是一个有序列表。若使用数组的结构来存储这个队列呢?那么诶,对,用这个来存储,那么用数组来存储队列的数据,则队列数据的声明如下,就是刚才给同学们看的这个示意图,我这就不再讲了。那在设计这个队列队列的时候呢,我们会做一个class,就Q这个这个类,这个类里边呢,有一个数组,就是这个类里面有一个成员属性,为了成员变量,它是数组。里面存的就是数据,那么还有一个属性呢,是max size,这个max size呢,是该队列的最大容量,就是最大,我们能存多少个数?能理解我的意思吧?
01:02
好了,大家看我说的第二句话,因为队列的输入输出是分别从前后端来处理的,刚才我们不是讲过有一个front,还有一个real吗?因此呢,我们需要两个变量,一个是front,一个是real,分别来记录队列的前后端,能理解如下图,那么front呢,会随着数据的输入而改变,也就是说当数据增加的时候,当数据的输出啊,这时候的是输出,就是当我们从队列取数据的时候呢,Front就会变化。而RA呢,是随着数据的输入而改变,什么意思,当我们数据增加的时候,就是入队列的时候呢,RA会在变化,就跟这个刚才我们分析的这个图是一样的。好,接着我们继续来分析,那现在呢,队列里面常用的几个操作,当然第一个是创建队列了,第二个呢,就是把数据加入队列,还有一个取队列,对吧?我们以存入将数据存入队列来进行一个分析,比如说我们把这个存队列写一个对应的成员,方法叫做爱的Q,那么爱的Q的处理呢,需要有两个步骤,我们来分析一下,第一个当我们在这个进行这个往数据里面填的时候呢,首先我们要把这个RA加一,因为。
02:24
数据从尾部加入,但是同学们要记住。你在添加这个数据到队列的时候,你必须先判断队列是否是一个空的,或者是是不是一个满的,对吧,对吧,就是说当我们队列为空的时候,或者说队列还没有满的时候呢,我们可以往里面填,但是有一个若为指针这个RA。它小于队列的最大值了。就是说它小于这个最大值,我们是可以存进去的,但是如果当它满足RA等于max减S值的时候。
03:00
也就是说它这个RA呢,已经等于max s减一,那对就已经满掉了,满了就不能再加了,所以说我们在加加这个数据到队列,队列的时候呢,要去判断队列是否满,而队列是否满取决于real和max size之间的关系。我们刚才讲过max size呢是代表最大的容量,而我们这个数组数据是存在对应数组里面的,大家还记不记得这,而数组的下边是从零开始的。可以可以想象,当max等于三的时候,其实我们最多只能存三个数据,而存三个数据的话,其实它最大的这一个下标只能是二,能理解吗?这点大家要清楚啊,也就是说,当这个条件满足时,队列满满了,就不能往里面加了。好,这就是对加入数据的一个思路分析。那么关于从队列取数据,判断队列是不是满,队列是不是空,我们呢,在代码里面逐层的为大家进行分析好了,那关于数组模拟队列的一个数思路分析呢?我们就聊到这里,下面准备代码实现,我先截段视频。
我来说两句