队列的概念
队列(Queue)是特殊的线性表,先进先出FIFO,只允许在队列的前端(front)进行删除操作,而在队列的尾部(rear)进行插入操作,
没有元素时,称为空队列。
队列可以分为:
单向队列(Queue)只允许在一端插入数据,另一端删除数据。
与栈不同的地方,队列内部的数据不总是从数组的下标0开始的,因为在移除队列头的元素后,队头的指针会往较高的数组的索引的位置。
实现队列需要实现:
1、队尾插入数据
2、队头删除数据
3、判断是否为空
4、获取队列中实际的元素个数
5、查看队头的数据
单链表实现代码:
public class SingleQueue {
private static int[] arr;
private static int maxSize;
private static int head;
private static int tail;
private static int size;
public SingleQueue(int capacity) {//初始化
this.maxSize = capacity;
head = 0;
tail = -1;
size = 0;
arr = new int[maxSize];
}
public void insert(int value) {
//如果队列满了,不能插入
if(isFull()) {
System.out.println("队列已满,插入失败...");
}else {
if(tail == maxSize-1) {
tail = -1;
}
arr[++