什么是队列?

再举一个简单的例子
在这里插入图片描述
先到先得,是队列的准则
就算是校长来了也得在后面排着!!!!
小明是队头,小李是队尾
不难想象,我们第一个放入的是小明,第二是小王,第三个是校长(小张),第四个是小李
我们拿数据的时候,第一个就是小明,小王,校长,小李
记得"先进先出“

实现一个队列?

实现过程相当简单,只需要基本的编程思路
1.链队
在这里插入图片描述
入队的时候,我们只需要把新的链表节点加到这个队末尾,出队的时候我们只需要把小明拿出去并切断锁链
这就是一个队列

2.顺序队
顺序队我们只需要在顺序表末尾去增删元素即可,符合顺序表的特性。
在这里插入图片描述

双向队列

这个概念类比于Stack,假如我们可以从两侧入队,从两侧出队在这里插入图片描述
出分为头出,尾出,入分为头入,尾入
入就把节点关联到一侧,出就是从一侧切下一个节点

循环队列

在这里插入图片描述
循环队列本身应该是这样的圈,但是计算机它做不到…我们靠想象就可以

我们想像它是一条线
在这里插入图片描述
入队:每次入队的时候把元素放在rear指针处,然后rear向后移动
出队:每次出队,把front指针向前移动,然后取出这个位置的值
判空:rear和front相差1
判满:rear和front重合
这不是唯一的方式,条件随着你的实现而变