一、什么是队列?
队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。其具有先进先出的特点。
入队列:进行插入操作的一端称为队尾
出队列:进行删除操作的一端称为队头
队列有:队列、双端队列、循环队列、阻塞队列…
二、队列底层
在java中,队列Queue是一个接口,LinkedList集合类实现了Queue接口,因此队列底层其实是一个LinkedList。
队列Deque叫做双端队列,也是一个接口,Deque接口实现了Queue接口。双端队列的队尾可以入队,也可以出队;队头可以出队,也可以入队。而队列Queue只能在队尾入队,队头出队。
三、自我实现一个队列
队列是线性表,因此既可以链式存储,又可以顺序存储:
3.1、链式存储
链式存储:使用单向链表自我实现一个队列。
3.1.1、单向链表实现队列的实现代码
3.1.2、双向链表实现队列的实现代码
3.2、顺序存储
循环队列: