Wenn Sie ein modernes Gerät verwenden, sind Sie wahrscheinlich auf Stack-Operationen gestoßen, auch wenn Sie es nicht bemerkt haben. Stapel sind für viele Programmieraufgaben von grundlegender Bedeutung, von der Verwaltung von Funktionsaufrufen bis zur Ermöglichung von Rückgängig-Vorgängen.
Stapel sind eine lineare Datenstruktur, die der Reihenfolge der Operationen folgt und Daten in einer LIFO- oder FILO-Struktur organisiert.
LIFO: Letzter rein, zuerst raus.
FILO: Zuerst rein, zuletzt raus.
Stapel werden verwendet, um Vorgänge an einer Sammlung von Elementen durchzuführen, z. B. das Hinzufügen und Entfernen von Elementen, das Anzeigen oberster Elemente und das Anzeigen, ob die Sammlung leer oder voll ist.
Zum Beispiel:
Wenn Sie in Ihrem Webbrowser gerade www.ESPN.com besuchen und versehentlich auf eine Anzeige für Baseball-Tickets für die Chicago White Sox klicken. Wir haben unseren Stapel vergrößert, vielleicht nicht absichtlich, aber jetzt steht es ganz oben auf unserem Stapel. Dann stellen wir fest, dass die Chicago White Sox 15 Spiele in Folge verloren haben. Nun ... lasst uns den Zurück-Button drücken (das Element von der Oberseite des Stapels entfernen).
Ja, das da oben. Dies demonstriert das LIFO-Prinzip bei Stack-Operationen. Wir verlassen (entfernen) die zuletzt besuchte Seite aus unserem Verlauf (oder unseren Stacks), um zu www.ESPN.com zurückzukehren ... vielleicht nächstes Jahr White Sox's.
Stack-Operationen werden häufig in Anwendungen verwendet, die den Webbrowser-Verlauf der Reihenfolge aufrechterhalten, Texteditoren und Funktionsaufruf-Stacks rückgängig machen und wiederherstellen müssen, um nur einige zu nennen.
Funktionen, die häufig beim Ändern von Stapeln verwendet werden, sind wie folgt:
.Push = um ein Element zu einem Stapel hinzuzufügen.
.pop = um das oberste Element aus einem Stapel zu entfernen.
.peek = um das oberste Element eines Stapels anzuzeigen.
.length/.size = um die Gesamtzahl der Indizes in einem Stapel zu bestimmen. Javascript verwendet (.length)
.isEmpty = prüft, ob ein Stapel leer ist.
.isFull = prüft, ob ein Stapel voll ist; wenn das Array eine feste Größe hat.
Stacks-Datenstrukturen können mit einer Stacks-Klasse oder mit einem regulären Array erstellt werden.
Stacks ohne Klasse implementieren:
Beim Ausführen von Stacks-Operationen ohne eine Stacks-Klasse simulieren wir Stack-Operationen mit einem Array.
Nachfolgend sehen Sie ein Beispiel für die Verwendung der Stapeloperationen zum Umkehren eines Zahlenarrays. Ich werde JSON.stringify verwenden, um die Werte des Array-Ergebnisses mit dem gewünschten Array-Ergebnis zu vergleichen.
Ex:
// Reverse an array using stack operations let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array let ordernumberList = []; // array to store the reversed order // Loop through the numberList array to reverse its order for (var i = 0; iIch möchte die if-else-Anweisung ganz am Ende hervorheben. Ich habe die Methode JSON.stringify verwendet, um die beiden Arrays zu vergleichen, da der Vergleich ohne sie „false“ zurückgeben und die else-Bedingung auslösen würde, obwohl die Arrays identischen Inhalt haben. Dies liegt daran, dass beim Vergleich von Arrays in JavaScript deren Referenzen (d. h. ihre Speicherorte) und nicht der tatsächliche Inhalt innerhalb der Arrays überprüft werden.
Wie wir in der gesamten for-Schleife sehen können, hat unsere Methode .pop (entfernt) den letzten Index im Array numberList first(LIFO). Fügen Sie es dann mit der Methode .push dem neuen Array ordernumberList hinzu und kehren Sie das ursprüngliche Array um.
FILO kommt in das neue Array, das so formuliert ist, dass die ersten Indizes, die in das Array „ordernumberList“ verschoben werden, die letzten sein werden, die herauskommen (FILO), wenn sie jemals mit den Stapeloperationen geändert werden.
In diesem Artikel haben wir untersucht, wie Stacks mithilfe der LIFO- und FILO-Prinzipien funktionieren, und Stack-Operationen in JavaScript implementiert. Das Verständnis von Stacks ist für viele Programmieraufgaben von entscheidender Bedeutung, wie sich in realen Szenarien wie dem Surfen im Internet zeigt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3