class CircularQueue{
private String[] items;
private int n;//队列长度
private int head=0;//队首指针
private int tail=0;//队尾指针
public CircularQueue(int capacity){
items=new String[capacity];
this.n=capacity;
}
public boolean enqueue(String item){
if((tail+1)%n==head)//队首指针,队尾指针移动后的位置是队首指针,则循环队列已满
return false;
items[tail]=item;
tail=(tail+1)%n;
return true;
}
public String dequeue(){
if(head==tail)//该队列已经空了
return null;
String ret=items[head];
head=(head+1)%n;//队首指针移动
return ret;
}
}
当循环队列满时会满足,(tail+1)%n=head。其中n为队列长度