Java数据结构与算法之队列(Queue)实现
前言
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列图解
Java代码实现队列
public class Queue {
// 存储队列数组
private long[] arr;
// 队列最大长度
private int maxSize;
// 队列元素数量
private int elems;
// 出队列标记
private int font;
// 进队列标记
private int end;
public Queue(int maxSize) {
this.maxSize = maxSize;
arr = new long[maxSize];
elems = 0;
font = 0;
end = -1;
}
// 入队列
public void insert(long value) {
if(end == maxSize - 1) {
end = -1;
}
arr[++end] = value;
elems++;
}
// 出队列
public long remove() {
long tmp = arr[font++];
if(font == maxSize) {
font = 0;
}
elems--;
return tmp;
}
// 队列是否为空
public boolean isEmpty() {
return (elems == 0);
}
// 队列是否满了
public boolean isFull() {
return (elems == maxSize);
}
// 队列大小
public int size() {
return elems;
}
}
public static void main(String[] args) {
Queue queue= new Queue(6);
System.out.println(queue.isEmpty());
queue.insert(1);
queue.insert(2);
queue.insert(3);
queue.insert(4);
queue.insert(5);
queue.insert(6);
while(!queue.isEmpty()) {
System.out.println(queue.remove());
}
}
程序运行结果