/**
* 基于数组的队列
*/
public class ArrayQueue {
private String[] items;
private int count; // 队列中元素大小
private int head; // 队列头
private int tail; // 队列尾
public ArrayQueue() {
this.count = 5; // 固定大小
this.items = new String[count];
this.head = 0;
this.tail = 0;
}
// 入队 队尾添加
public boolean enqueue(String item){
if(tail == count){
// 队满且head=0
if(head == 0){
return false;
}
// 数据搬移
for(int i = head; i < tail; i++){
items[i-head] = items[i];
}
tail = tail - head;
head = 0;
}
items[tail++] = item;
return true;
}
// 出队 队头出队
public boolean dequeue(){
if(tail == head){
return false;
}
items[head++] = null;
return true;
}
@Override
public String toString() {
String s = "";
for(int i=head ; i<tail ; i++){
s+=items[i]+" ";
}
return s;
}
}