基於陣列實現JAVA的佇列儲存結構
阿新 • • 發佈:2018-12-27
佇列是一種特殊的線性表,它只允許在表的前段(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