Erstellung einer Schnittstelle für Charakterwarteschlangen.
Drei zu entwickelnde Implementierungen:
Lineare Warteschlange mit fester Größe.
Zirkuläre Warteschlange (verwendet Array-Speicherplatz wieder).
Dynamische Warteschlange (wächst nach Bedarf).
1 Erstellen Sie eine Datei mit dem Namen ICharQ.java
// Zeichenwarteschlangenschnittstelle.
öffentliche Schnittstelle ICharQ {
// Fügt ein Zeichen in die Warteschlange ein.
void put(char ch);
// Ein Zeichen aus der Warteschlange entfernen.
char get();
}
2 Erstellen Sie eine Datei mit dem Namen IQDemo.java.
3 Beginnen Sie mit der Erstellung von IQDemo.java, indem Sie die hier gezeigte FixedQueue-Klasse hinzufügen:
4 Fügen Sie die unten gezeigte CircularQueue-Klasse zu IQDemo.java hinzu.
Zirkulärer Warteschlangenvorgang: Verwendet beim Entfernen von Elementen frei gewordenen Platz im Array wieder. Es kann eine unbegrenzte Anzahl von Elementen gespeichert werden, solange es Entfernungen gibt.
Randbedingungen: Die Warteschlange ist nicht voll, wenn das Ende des Arrays erreicht ist, sondern wenn ein nicht entferntes Element durch ein neues überschrieben wird.
Die put()-Methode muss mehrere Bedingungen prüfen, um festzustellen, ob die Warteschlange voll ist.
Bedingungen für eine volle Warteschlange: Die Warteschlange ist voll, wenn: putloc eine kleinere Einheit als getloc ist. putloc steht am Ende des Arrays und getloc am Anfang.
Bedingung für leere Warteschlange: Die Warteschlange ist leer, wenn getloc und putloc gleich sind.
Array-Größe: Das zugrunde liegende Array wird eine Einheit größer als die Warteschlangengröße erstellt, um Überprüfungen zu erleichtern.
5 Fügen Sie die unten gezeigte DynQueue-Klasse in IQDemo.java ein. Es implementiert eine „erweiterbare“ Warteschlange, die ihre Größe erweitert, wenn der Speicherplatz knapp wird.
6 Um die drei Implementierungen von ICharQ zu demonstrieren, fügen Sie die folgende Klasse in IQDemo.java ein. Es verwendet eine ICharQ-Referenz, um auf alle Warteschlangen zuzugreifen.
Klasse IQDemo {
public static void main(String args[]) {
FixedQueue q1 = new FixedQueue(10);
DynQueue q2 = new DynQueue(5);
CircularQueue q3 = new CircularQueue(10);
ICharQ iQ;
char ch;
int i;
iQ = q1;
// Fügt einige Zeichen in die feste Warteschlange ein.
for(i=0; i < 10; i )
iQ.put((char) ('A' i));
// Zeigt die Warteschlange an.
System.out.print("Inhalt der festen Warteschlange: ");
for(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q2;
// Fügt einige Zeichen in die dynamische Warteschlange ein.
for(i=0; i < 10; i )
iQ.put((char) ('Z' - i));
// Zeigt die Warteschlange an.
System.out.print("Inhalt der dynamischen Warteschlange: ");
for(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q3;
// Fügt einige Zeichen in die kreisförmige Warteschlange ein.
for(i=0; i < 10; i )
iQ.put((char) ('A' i));
// Zeigt die Warteschlange an.
System.out.print("Inhalt der zirkulären Warteschlange: ");
for(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
// Fügt weitere Zeichen in die kreisförmige Warteschlange ein.
for(i=10; i < 20; i )
iQ.put((char) ('A' i));
// Zeigt die Warteschlange an.
System.out.print("Inhalt der zirkulären Warteschlange: ");
for(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println("nSpeichern und konsumieren von"
" kreisförmige Warteschlange.");
// Speichert und verbraucht Elemente aus der zirkulären Warteschlange.
for(i=0; i < 20; i ) {
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 Erstellen Sie eine zirkuläre Version von DynQueue. Fügen Sie ICharQ eine Methode reset( ) hinzu, die die Warteschlange vernetzt. Erstellen Sie eine statische Methode, die den Inhalt eines Warteschlangentyps in einen anderen kopiert.
Das obige ist der detaillierte Inhalt vonErstellen Sie eine Warteschlangenschnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!