Queue mit Stack implementieren
Warteschlange und Stapel sind ziemlich einfache Datenstrukturen, die wir in unserer täglichen Codierung verwenden. Tatsächlich können sie als die am einfachsten zu verwaltenden Strukturen für Daten angesehen werden.
Im gesamten Artikel verwende ich DS, um auf Datenstruktur zu verweisen.
Queue ist ein DS, der nach dem FIFO-Prinzip arbeitet. Die Daten, die zuerst kommen, dürfen zuerst raus. Es gibt viele Möglichkeiten, Warteschlangen zu implementieren. Es steht uns frei, Arrays, verknüpfte Listen und viele andere zu verwenden. Aber hier möchte ich die Implementierung von Queue mithilfe eines anderen DS namens Stack besprechen.
Jetzt wissen wir alle, dass Stack ein DS ist, der nach dem LIFO-Prinzip arbeitet. Ich denke immer darüber nach, Bücher übereinander zu stapeln, Sie können also gerne diese Analogie verwenden, wenn sie Ihnen bei der Visualisierung hilft.
Ich bin bei Hackerrank auf diese Frage gestoßen, wo wir aufgefordert wurden, Queue mit 2 Stacks zu implementieren. Klingt einfach, oder? Nehmen Sie sich einen Moment Zeit und überlegen Sie, wie wir dies erreichen können.
Vielleicht haben Sie sich einige Lösungen ausgedacht, denn es gibt viele Möglichkeiten, dies zu tun. Warum probieren Sie es also nicht direkt aus?
Frage
Jetzt möchte ich denjenigen, die es versucht haben und einen „Timeout-Fehler“ erhalten haben, und denjenigen, die sich nicht die Mühe gemacht haben, es zu versuchen, die einfachste und einfachste Lösung für dieses Problem erklären.
Schauen Sie sich zunächst an, wie der Stack implementiert werden kann.
Wie Sie sehen können, habe ich den Stack mithilfe einer Liste implementiert. Zunächst initialisiert der Konstruktor eine leere Liste. Wir pushen Daten, indem wir sie an das Ende der Liste anhängen. Wenn wir beim Pop-Up keinen Index bereitstellen, wird er am Ende der Liste angezeigt. Somit ist das letzte eingefügte Element das erste, das herausspringt.
Jetzt haben wir auf ähnliche Weise für die Warteschlange zwei verschiedene Stapel initialisiert. Eine für die Warteschlange und eine für die Warteschlange.
Wir verwenden enqueueStack ähnlich wie Stack, nur um Daten am Ende der Liste zu verschieben. Aber für dequeueStack wissen wir, dass die Pop-Funktion von Stack das Element vom letzten entfernt, also tun wir Folgendes: Wir kehren den enqueueStack um und fügen ihn in dequeueStack ein. Somit wird das erste Element von enqueueStack zum letzten Element von dequeueStack, das zweite von enqueueStack wird zum vorletzten von dequeueStack und so weiter. Wenn wir nun die Pop-Funktion für dequeueStack verwenden, wird das erste Element entfernt, das wir verschoben haben, und so die Warteschlange nachahmen.
Machen Sie sich keine Sorgen, wenn das jetzt verwirrend klingt! Sobald Sie den Code sehen, werden Sie erkennen, wovon ich spreche. Schauen Sie es sich doch gleich an!
Sie fragen sich vielleicht, wozu diese zusätzlichen Schecks dienen. Als würde man überprüfen, ob der dequeueStack leer ist oder nicht. Wenn wir es nicht zunächst überprüfen. Die Elemente des enqueueStack werden durch Umkehrung in den dequeueStack übernommen, und was passiert, ist, dass das dequeue Stacks-Element, das zuerst sein sollte, nun das letzte ist. Daher muss dequeueStack zunächst geleert werden, wie im Code gezeigt.
Ähnlich wie hier druckt printFront das Element, das sich an der Spitze der Warteschlange befinden soll.
Nach dieser Implementierung lesen wir die Eingabe von STDIN und drucken die Ausgabe an STDOUT.
Unsere Eingabe sieht ungefähr so aus:
Und die vollständige Hauptfunktion ist:
Ich habe versucht, dies so einfach wie möglich umzusetzen. Möglicherweise gibt es mehrere andere und bessere Möglichkeiten, dies umzusetzen. Einer davon wird hier vorgestellt!
Das obige ist der detaillierte Inhalt vonQueue mit Stack implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.
