首頁  >  文章  >  Java  >  建立隊列介面

建立隊列介面

Patricia Arquette
Patricia Arquette原創
2024-10-02 06:23:30191瀏覽
  • 建立字元佇列介面。

  • 待開發的三個實作:

  • 固定大小的線性隊列。

  • 循環隊列(複用數組空間)。

  • 動態佇列(根據需要成長)。

1 建立一個名為 ICharQ.java
的文件 // 字元隊列介面。
公用介面 ICharQ {
// 向佇列中插入一個字元。
void put(char ch);
// 從佇列中刪除一個字元。
char get();
}

2 建立一個名為 IQDemo.java 的檔案。

3 透過新增此處顯示的 FixQueue 類別開始建立 IQDemo.java:

Crie uma interface Queue

4 將如下所示的 CircularQueue 類別加入 IQDemo.java。

Crie uma interface Queue

  • 循環佇列操作:重複使用數組中刪除元素時釋放的空間,只要有刪除,它就可以儲存無限數量的元素。

  • 邊界條件:當到達陣列結尾時,但當未刪除的項目被新項目覆蓋時,佇列未滿。
    put() 方法必須檢查幾個條件來決定佇列是否已滿。

  • 滿隊列的條件: 如果滿足下列條件,則佇列已滿: putloc 的單位小於 getloc。 putloc 位於數組末尾,getloc 位於數組開頭。

  • 空佇列條件:當 getloc 和 putloc 相等時,佇列為空。

  • 陣列大小:底層陣列會比佇列大小大一個單位,以方便檢查。

5 在 IQDemo.java 中插入如下所示的 DynQueue 類別。它實現了一個“可擴展”隊列,當空間耗盡時可以擴展其大小。

Crie uma interface Queue

  • 在此佇列實作中,當佇列已滿時,嘗試儲存另一個元素會使新的底層陣列兩倍大 原始數組將被分配,隊列的當前內容將複製到此數組中,並且對新數組的引用將儲存在 q.

6 要示範 ICharQ 的三種實現,請將以下類別插入到 IQDemo.java 中。它使用 ICharQ 引用來存取所有佇列。

類別 IQDemo {
public static void main(String args[]) {
固定隊列 q1 = new 固定隊列(10);
DynQueue q2 = new DynQueue(5);
CircularQueue q3 = new CircularQueue(10);
ICharQ iQ;
char ch;
int i;
iQ = q1;
// 將一些字元插入到固定隊列中。
for(i=0; i iQ.put((char) ('A' i));
// 顯示隊列。
System.out.print("固定隊列的內容:");
for(i=0; i ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q2;
// 在動態佇列中插入一些字元。
for(i=0; i iQ.put((char) ('Z' - i));
// 顯示隊列。
System.out.print("動態佇列的內容:");
for(i=0; i ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q3;
// 在循環佇列中插入一些字元。
for(i=0; i iQ.put((char) ('A' i));
// 顯示隊列。
System.out.print("循環佇列的內容:");
for(i=0; i ch = iQ.get();
System.out.print(ch);
}
System.out.println();
// 將更多字元插入循環隊列。
for(i=10; i iQ.put((char) ('A' i));
// 顯示隊列。
System.out.print("循環佇列的內容:");
for(i=0; i ch = iQ.get();
System.out.print(ch);
}
System.out.println("n儲存並消費自"
“循環隊列。”);
// 儲存並使用循環佇列中的項目。
for(i=0; i iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}

7 建立 DynQueue 的循環版本。向 ICharQ 新增一個重置佇列的方法。建立一個靜態方法,將一種佇列類型的內容複製到另一種佇列類型。

以上是建立隊列介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:導入包下一篇:導入包