一、队列简介
定义
队列(queue)在计算机科学中,是一种先进先出的线性表。它只允许在表的前端进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
简单的可以想成我们排队买东西,我们只能从队尾进入排队之中(我们都是良好公民,不插队),在队首的人先买到东西付款。
1. 队列是一种线性结构; 2. 相比数组,队列对应操作的是数组的子集; 3. 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 。 先进先出的数据结构(先到先得First In First Out【FIFO】)。
二、代码实现
我们要实现它,通过上面描述可知,我们要有入队和出队的操作。
1. 队列接口
public interface Queue{
int getSize(); //返回元素的个数
E getFront(); //返回队首元素内容
boolean isEmpty(); //判断是否为空
void enqueue(E e); // 入队
E dequeue(); //出队
}
2.循环队列
循环队列中有两个新词,两个指针
- front 指向队列的第一个元素,初始指向0
- tail 指向队列的最后一个元素的后一个位置,初始指向0
- 循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时&