/**
* 隊列
* */
public class Queue {
/** 一般隊列隊頭爲0位置,隊尾爲-1位置,
* 在隊尾插入rear上移一位,
* 當rear等於隊列總長減1時,則rear被置爲-1位置,
* 在隊頭刪除front上移一位
* 當front等於隊列總長時,則front被置爲0位置*/
private int maxSize;//最大長度
private long[] queArray;//初始化一個隊列
private int front;//隊頭
private int rear;//隊尾
private int nItems;//隊列中當前數據項的個數
public Queue(int s){
maxSize=s;
queArray=new long[maxSize];
front=0;
rear=-1;
nItems=0;
}
public void insert(long j){
if(rear==maxSize-1){
rear=-1;
}
System.out.println("rear1:"+rear);
queArray[++rear]=j;
System.out.println("rear2:"+rear);
nItems++;
}
public long remove(){
long temp=queArray[front++];
System.out.println("front1:"+front);
if(front==maxSize){
front=0;
}
System.out.println("front2:"+front);
nItems--;
return temp;
}
public long peekFront(){
return queArray[front];
}
public boolean isEmpty(){
return (nItems==0);
}
public boolean isFull(){
return (nItems==maxSize);
}
public int size(){
return nItems;
}
}
/**
* 隊列的實現
* */
public class QueueApp {
public static void main(String[] args) {
Queue theQueue=new Queue(5);
theQueue.insert(10);
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();
theQueue.remove();
theQueue.remove();
theQueue.insert(50);
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);
while(!theQueue.isEmpty()){
long n=theQueue.remove();
System.out.println(n);
System.out.println(" ");
}
System.out.println(" ");
}
}