建立字元隊列的介面。
需要開發的三個實作:
固定大小的線性隊列。
循環隊列(複用數組空間)。
動態隊列(根據需要成長)。
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相等時隊列為空。
陣列大小:底層陣列比隊列大小大1個單位,方便檢查。
5 在 IQDemo.java 中插入如下所示的 DynQueue 類別。它實現了一個“可擴展”隊列,當空間耗盡時可以擴展其大小。
6 若要示範 ICharQ 的三種實現,請將下列類別插入 IQDemo.java 中。它使用 ICharQ 引用來存取所有佇列。
類別 IQDemo {
公共靜態無效主(字串參數[]){
固定隊列 q1 = 新固定隊列(10);
DynQueue q2 = new DynQueue(5);
CircularQueue q3 = new CircularQueue(10);
ICharQ iQ;
字符ch;
整數我;
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 新增一個重置佇列的方法。建立一個靜態方法,將一種佇列類型的內容複製到另一種佇列類型。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3