Java实现循环队列:
package ch04;
public class CircularQueue {
// 数组
private long[] arr;
// 最大空间
private int maxSize;
// 有效元素大小
private int elmes;
// 对头
private int font;
// 队尾
private int end;
// 构造方法
public CircularQueue(int maxSize) {
this.maxSize = maxSize;
arr = new long[maxSize];
elmes = 0;
font = 0;
end = -1;
}
// 插入数据
public void insert(long value) {
if (end == maxSize - 1) {
end = -1;
}
arr[++end] = value;
elmes++;
}
// 移除数据
public long remove() {
long temp = arr[font++];
if (font == maxSize) {
font = 0;
}
elmes--;
return (temp);
}
// 是否为空
public boolean isEmpty() {
return (elmes == 0);
}
// 是否满了
public boolean isFull() {
return (elmes == maxSize);
}
// 返回有效元素大小
public int size() {
return elmes;
}
public static void main(String[] args) {
CircularQueue queue = new CircularQueue(5);
System.out.println(queue.isEmpty());
queue.insert(50);
queue.insert(10);
queue.insert(40);
queue.insert(30);
queue.insert(20);
System.out.println(queue.isEmpty());
System.out.println(queue.isFull());
while (!queue.isEmpty()) {
long temp = queue.remove();
System.out.print(temp + " ");
}
System.out.println();
System.out.println(queue.size());
queue.insert(1);
queue.insert(23);
queue.insert(22);
queue.insert(30);
queue.insert(25);
while (!queue.isEmpty()) {
long temp = queue.remove();
System.out.print(temp + " ");
}
}
}