建立隊列介面
建立字元佇列介面。
待開發的三個實作:
固定大小的線性隊列。
循環隊列(複用數組空間)。
動態佇列(根據需要成長)。
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 類別。它實現了一個“可擴展”隊列,當空間耗盡時可以擴展其大小。
- 在此佇列實作中,當佇列已滿時,嘗試儲存另一個元素會使新的底層陣列兩倍大 原始數組將被分配,隊列的當前內容將複製到此數組中,並且對新數組的引用將儲存在 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
