隊列的實現

基于順序表的隊列:

package StackExercise;

public class OrderQueue<T> {
   //默認的最大長度
   public static final int DEFAULT_SIZE = 20;
   //最大長度
   private int maxSize;
   //當前隊列
   private Object[] objs;
   //隊列頭
   private int head;
   //隊列尾
   private int tail;
   //隊列長度
   private int size;

   //初始化
   public OrderQueue() {
       this(DEFAULT_SIZE);
   }

   //初始化
   public OrderQueue(int size) {
       head = 0;
       tail = 0;
       maxSize = size;
       objs = new Object[maxSize];
   }

   //獲取隊列長度
   public int getLength() {
       return size;
   }

   //出隊
   public T deQueue() {
       T ret = null;
       if (size <= 0) {
           throw new RuntimeException("隊列為空!");
       } else {
           size--;
           ret = (T) objs[head];
           objs[head] = null;
           head = ++head % maxSize;
       }
       return ret;

   }

   //入隊
   public void enQueue(T t) {
       if (size == maxSize) {
           throw new RuntimeException("隊列已滿!");
       } else {
           size++;
           objs[tail] = (Object) t;
           tail = ++tail % maxSize;
       }
   }

   //打印
   public void print() {
       int start = head;
       while (start != tail) {
           System.out.print(objs[start] + "\n");
           start = ++start % maxSize;
       }
   }
}

基于鏈表形式的有空再補充。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。這兩個附加的操作是:在隊列為空時,獲取元素的線...
    堤岸小跑閱讀 460評論 0 2
  • 鏈表的基本操作 定義 從鏈表頭部插入元素 從鏈表頭部刪除元素 從鏈表尾部插入元素 從中間插入和刪除結點 棧和對列的...
    gskobe0811閱讀 483評論 0 2
  • 一、概述 由于隊列有元素出列,front就向后移動,所以隊列前面的空間就空了出來。為了更合理的利用空間,將隊列的首...
    saviochen閱讀 1,357評論 0 3
  • 顏陵作為丞相之子,一直都是夜宸惜得力的臣子手下,只要是夜宸惜想要的東西,即使遠在天邊,顏陵也會給他找到,顏陵說過“...
    東樂雙子年華似水閱讀 413評論 0 2
  • 瓷都 有干凈的街道 路旁的落葉喬木 金黃色的 很亮 馬路很干凈 ...
    青黛淡竹葉閱讀 330評論 2 0

友情鏈接更多精彩內容