Methode "Reverse" kehrt die Elemente einer queue
Dies ist nicht ein HW-oder-Verknüpfung. Dies ist etwas, was ich übe mich.
Gegeben eine Warteschlange schreiben Sie eine Methode "Reverse" kehrt die Elemente einer queue. MyQueue bleibt unverändert.
Signatur:
public Queue<T> reverse(Queue<T> myQueue) {
Hinweis: Es ist unbekannt, ob die Warteschlange mit Knoten oder array.
Der Warteschlange ist Methoden bereits implementiert, die wir nutzen können:
void enqueue(T element)
T dequeue();
boolean isFull();
boolean isEmpty();
int size();
kannst du bitte den code schreiben, dass du schon geschrieben hast?
das ist der Punkt, man kriegt nur die Namen der Methoden, die Sie verwenden können:
Hack: Verwenden Sie ein
Meinst du nicht das JDK ist
das ist der Punkt, man kriegt nur die Namen der Methoden, die Sie verwenden können:
Hack: Verwenden Sie ein
java.util.ArrayList
als Puffer.Meinst du nicht das JDK ist
Queue
Umsetzung?InformationsquelleAutor user2272227 | 2013-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht mit der Schnittstelle, die Sie zur Verfügung gestellt. Es ist eine Daten-Struktur namens double ended queue, das ermöglicht Ihnen das hinzufügen und entfernen von Elementen an beiden enden. Die Umkehrung solch eine Datenstruktur, die getan werden kann, ohne alle temporären Puffer.
InformationsquelleAutor Oswald
Können Sie rückgängig machen, ein queue mit einem stack.
Hier ist, wie in Java:
Hier ein Beispiel:
Warteschlange Elemente:
1 2 3 4
Wenn die Elemente Hinzugefügt, um einen Stapel, der Nummer 1 werden am Ende der Liste, und 4 an der Spitze:
1 2 3 4 <- top
Nun pop-Stapel aus, und legen Sie die Elemente wieder in die Warteschlange:
4 3 2 1
Ich hoffe, dass dies geholfen.
InformationsquelleAutor Alicia Rodriguez
Können Sie dies tun, ohne andere arrays oder Listen einfach durch Rekursion:
Ersten Elemente werden gestapelt im "flachen" Teil des Stapels, während die letzten Elemente in "tiefere" Teil, und bei der Rekursion wird das Ende erreicht, der "tiefere" Werte Hinzugefügt werden erste und "flach" last.
Aber beachten Sie, dass ein jedes element bedeutet einen Schritt tiefer in die Rekursion, so stack-überlauf-Fehler wird auftreten, wenn die Warteschlange ist zu groß.
Auch, die ursprüngliche Warteschlange nicht "überleben" der flip.
InformationsquelleAutor kajacx
Habe ich zwei verschiedene Ansätze, die nicht hängt davon ab, Ihre queue-Größe. Die erste benutzt Stack und das zweite - Java 8 Stream API (die schnellsten).
Die effektivste Lösung für Umkehrung Warteschlange in meinen tests ist:
InformationsquelleAutor Dmytro Melnychuk