数组实现队列
public class queue{
private intp[] data;
private int head;//头指针
private int tail;//尾指针
private int size;//
public queue(int k){
data=new int[k];
head=-1;
tail=-1;
size=k;
}
//入队
public boolean enqueue(int value){
if(tail==size)
return false;
data[++tail]=value;
return true;
}
//出队
public boolean dequeue(){
if(head==tail){
return false;
}
head++;
return true;
}
}
数组实现循环队列
class CircularQueue{
private int[] data;
private int head;
private int tail;
private int size;
public CircularQueue(int k){
data=new int[k];
head=-1;
tail=-1;
size=k;
}
//入队
public boolean enQueue(int value){
if(isFull()==true){
return false;
}
if(isEmpty()==true){
head=0;
}
tail=(tail+1)%size;
data[tail]=value;
return true;
}
//出队
public boolean deQueue(){
if(isEmpty()==true){
return false;
}
if(head==tail){
head=-1;tail=-1;return true;
}
head=(head+1)%size;
return true;
}
//获取队头
public int Front(){
if(isEmpty()==true)
return -1;
return data[head];
}
//获取队尾
public int rear(){
if(isEmpty()==true)
return -1;
return data[tail];
}
public boolean isEmpty() {
return head == -1;
}
public boolean isFull() {
return ((tail + 1) % size) == head;
}
}