ADT3队列
队列是一个较为简单的ADT,它满足先进先出的原则
实际上队列用链表来表示是非常方便的,但我们的直观印象还是数组或者是循环数组。教材上说队列可以在概率论中有一些应用,挺神奇的还是
我们以数组为例:
队列的ADT中最主要的是两个指针(不一定是真的指针,就是标记位置的变量即可)Rear和Front,以及储存数据的数组。
入队的时候Rear后移一位,并把数据存入到当前的位置;
出队的时候Front指向的位置的元素被弹出,Front后移一位;
在这种思路下,我们初始化的时候Front最好置为1,Rear最好置为0;
需要注意的内容:
Rear和Front后移之后可能会超过MAXSIZE,这需要我们及时模上MAXSIZE来达成循环数组的功能
有些时候Front和Rear之间会留出一个空位来,以便判断队列是否已经满了(实际上这样的操作下并没有满,中间空了一个格子,(Front-Rear)%MAXSIZE应该是2
这样操作也有不方便的地方,有点违背统一的原则。有种不优雅的方式,就是检查Front下面的元素是否是初始时的没有元素入队是的数组的元素。(因为判断是否满的问题就在于Front-Rear模上MAXSIZE可能在空和满的情况下是相同的值