隊列是一種特殊的線性表,它只允許在表的前段(front)進行刪除操作,只允許在表的後端(rear)進行插入操作。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲隊頭。
對於一個隊列來說,每個元素總是從隊列的rear端進入隊列,然後等待該元素之前的所有元素出隊之後,當前元素才能出對,遵循先進先出(FIFO)原則。
public class Queue {
private int max_size;
private int[] queueArry;
private int front;
private int rear;
private int number;
public Queue(int i){ //構造方法
max_size=i;
queueArry=new int[max_size];
front=0;
rear=-1;
number=0;
}
public void insert(int i){ //入列
/* if(rear==max_size-1){
rear=-1;
}*/
queueArry[++rear]=i;
number++;
}
public int remove(){ //出列
int temp=queueArry[front++];
/* if(front==max_size){
front=0;
}*/
number--;
return temp;
}
public int peekFront(){ //查看隊頭元素
return queueArry[front];
}
public boolean isEmpty(){ //判空
return (number==0);
}
public boolean isFull(){ //判滿
return (number==max_size);
}
public int size(){ //隊列元素個數
return number;
}
}
測試類
public class QueueApp {
public static void main(String args[]){
Queue queue=new Queue(10); //創建一個固定長度的隊列
queue.insert(5);
queue.insert(3);
queue.insert(7);
queue.insert(2); //5 3 7 2
queue.remove();
queue.remove(); // 7 2
queue.insert(9);
queue.insert(1);
queue.insert(8); //7 2 9 1 8
while (!queue.isEmpty()){
System.out.print( queue.remove()+" ");
}
}
}
運行結果:7 2 9 1 8