Heim > Java > javaLernprogramm > Hauptteil

Erstellen Sie eine Warteschlangenschnittstelle

Patricia Arquette
Freigeben: 2024-10-02 06:23:30
Original
196 Leute haben es durchsucht
  • 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:

Crie uma interface Queue

4 Fügen Sie die unten gezeigte CircularQueue-Klasse zu IQDemo.java hinzu.

Crie uma interface Queue

  • 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.

Crie uma interface Queue

  • Wenn in dieser Warteschlangenimplementierung die Warteschlange voll ist, führt der Versuch, ein anderes Element zu speichern, dazu, dass ein neues zugrunde liegendes Array doppelt so groß wird das Original wird zugewiesen, der aktuelle Inhalt der Warteschlange wird in dieses Array kopiert und ein Verweis auf das neue Array wird in q gespeichert.

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!