標籤:資料結構演算法
用java實現迴圈隊列的方法:
1、增加一個屬性size用來記錄目前的元素個數。目的是當head=rear的時候,通過size=0還是size=數組長度,來區分隊列為空白,或者隊列已滿。
2、數組中只儲存數組大小-1個元素,保證rear轉一圈之後不會和head相等,也就是隊列滿的時候,rear+1=head,中間剛好空一個元素;當rear=head的時候,一定是隊列空了。
import java.io.*;public class QueueArray { Object[] a; //對象數組,隊列最多儲存a.length-1個對象 int front; //隊首下標 int rear; //隊尾下標 public QueueArray(){ this(10); //調用其它構造方法 } public QueueArray(int size){ a = new Object[size]; front = 0; rear =0; } /** * 將一個對象追加到隊列尾部 * @param obj 對象 * @return 隊列滿時返回false,否則返回true */ public boolean enqueue(Object obj){ if((rear+1)%a.length==front){ return false; } a[rear]=obj; rear = (rear+1)%a.length; return true; } /** * 隊列頭部的第一個對象出隊 * @return 出隊的對象,隊列空時返回null */ public Object dequeue(){ if(rear==front){ return null; } Object obj = a[front]; front = (front+1)%a.length; return obj; } public static void main(String[] args) { QueueArray q = new QueueArray(4); System.out.println(q.enqueue("張三")); System.out.println(q.enqueue("李斯")); System.out.println(q.enqueue("趙五")); System.out.println(q.enqueue("王一"));//無法入隊列,隊列滿 for(int i=0;i<4;i++){ System.out.println(q.dequeue()); } } }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java數組實現迴圈隊列的兩種方法