建立字元佇列介面。
待開發的三個實作:
固定大小的線性隊列。
循環隊列(複用數組空間)。
動態佇列(根據需要成長)。
1 建立一個名為 ICharQ.java
的文件
// 字元隊列介面。
公用介面 ICharQ {
// 向佇列中插入一個字元。
void put(char ch);
// 從佇列中刪除一個字元。
char get();
}
2 建立一個名為 IQDemo.java 的檔案。
3 透過新增此處顯示的 FixQueue 類別開始建立 IQDemo.java:
4 將如下所示的 CircularQueue 類別加入 IQDemo.java。
循環佇列操作:重複使用數組中刪除元素時釋放的空間,只要有刪除,它就可以儲存無限數量的元素。
邊界條件:當到達陣列結尾時,但當未刪除的項目被新項目覆蓋時,佇列未滿。
put() 方法必須檢查幾個條件來決定佇列是否已滿。
滿隊列的條件: 如果滿足下列條件,則佇列已滿: putloc 的單位小於 getloc。 putloc 位於數組末尾,getloc 位於數組開頭。
空佇列條件:當 getloc 和 putloc 相等時,佇列為空。
陣列大小:底層陣列會比佇列大小大一個單位,以方便檢查。
5 在 IQDemo.java 中插入如下所示的 DynQueue 類別。它實現了一個“可擴展”隊列,當空間耗盡時可以擴展其大小。
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中文網其他相關文章!