JavaScript implementiert den detaillierten Prozess der Stapelstruktur

JavaScript implementiert den detaillierten Prozess der Stapelstruktur

1. Die Stapelstruktur verstehen

Wir wissen, dass Arrays eine gängige Datenstruktur sind und Daten an jeder beliebigen Stelle im Array eingefügt und gelöscht werden können. Um bestimmte Funktionen zu erreichen, müssen wir diese Willkür jedoch manchmal einschränken. Stapel und Warteschlangen sind relativ gängige eingeschränkte Datenstrukturen. Schauen wir uns zunächst den Stapel an.
Ein stack ist eine eingeschränkte lineare Tabelle mit der Reihenfolge „Last In – First Out“ ( LIFO ).

  • Die Einschränkung besteht darin, dass Einfüge- und Löschvorgänge an einem Ende der Tabelle zulässig sind. Dieses Ende wird als Oberseite des Stapels bezeichnet, und das andere Ende wird als Unterseite des Stapels bezeichnet.
  • LIFO (Last In First Out) bedeutet, dass das zuletzt eingegebene Element als erstes aus dem Stapelspeicher entfernt wird.
  • Das Einfügen eines neuen Elements in einen Stapel wird auch Pushen, Pushen oder Pushen genannt. Dabei wird das neue Element auf das oberste Element des Stapels gelegt, sodass es zum neuen obersten Element des Stapels wird.
  • Das Löschen eines Elements aus einem Stapel wird auch als Erstellen eines Stapels oder Aufheben eines Stapels bezeichnet. Dabei wird das oberste Element des Stapels gelöscht und das benachbarte Element zum neuen obersten Element des Stapels gemacht.

Das Strukturdiagramm sieht wie folgt aus:

Ähnlich wie Stack im Leben

Beispiel: Wenn beim Eintippen von Code ein Fehler auftritt und dieser gelöscht werden muss, wird der zuerst eingegebene Code als letzter gelöscht.

Als Nächstes implementieren wir gemeinsam die Kapselung der Stapelstruktur. Die von uns verwendete Methode basiert auf einem Array.

2. Kapselung der Stapelstruktur

Erstellen Sie zunächst eine Klasse, die die Stapelstruktur wie folgt kapselt:

Funktion Stack(){
            
        }

Fügen Sie darin Eigenschaften und Methoden hinzu und fügen Sie das Array über die Eigenschaftsmethoden der Klasse hinzu. Verwenden Sie dann die Prototypmethode, um häufig verwendete Operationen hinzuzufügen.

Häufige Operationen an Stapeln sind:

  • push (Element): Fügt oben im Stapel ein neues Element hinzu.
  • pop() : Entfernt das oberste Element des Stapels
  • peek( ) : Gibt das oberste Element des Stapels zurück, ohne den Stapel zu ändern.
  • isEmpty() : Bestimmt, ob der Stapel leer ist. Wenn sich kein Element im Stapel befindet, wird true zurückgegeben, andernfalls false
  • size() : Gibt die Anzahl der Elemente im Stapel zurück
  • toString() : Gibt den Inhalt der Stapelstruktur als Zeichen zurück

Als nächstes werden wir sie nacheinander implementieren:

 Funktion Stack(){
     diese.Artikel = [];
     // Füge oben im Stapel ein neues Element hinzu. drücken()
     Stack.prototype.push = Funktion(Element){
        dies.items.push(element);
     }
      //Entferne das oberste Element des Stapels pop()
     Stack.prototype.pop = Funktion(){
         gibt this.items.pop() zurück;
     }
     //Gibt das Element oben auf dem Stapel zurück, ohne Änderungen am Stapel vorzunehmen peek()
     Stack.prototype.peek = Funktion(){
         gib diese.Elemente zurück[diese.Elemente.Länge-1];
     }
     //Feststellen, ob der Stapel leer ist isEmpty()
     Stack.prototype.isEmpty = Funktion(){
         wenn (this.items.length == 0) {
             gibt true zurück;
         }anders {
             gibt false zurück;
         }
     }
     //Gibt die Anzahl der Elemente im Stapel zurück size()
     Stack.prototype.size = Funktion(){
         gib diese.Elemente.Länge zurück;
     }
     //Gibt den Inhalt der Stapelstruktur als Zeichen zurück toString()
     Stack.prototype.toString = Funktion(){
         var str = '';
         für(var i =0;i<this.items.length;i++){
             str += diese.Elemente[i] + ' ';
         }
         gibt str zurück;
     }
 }
       


Hinweis: Warum müssen wir es hier über den Prototyp hinzufügen? Dies liegt daran, dass die über diese Methode hinzugefügten Methoden der Klasse hinzugefügt werden. Wenn sie direkt darüber hinzugefügt werden, werden sie dem spezifischen Instanzobjekt hinzugefügt, was zu einer Speicherverschwendung führt.

Abschließend überprüfen. Der Code lautet wie folgt:

var stack = neuer Stack();
stapel.push(1);
stapel.push(2);
stapel.push(3);
stapel.push(4);
stapel.push(5);
konsole.log(Stapel);
console.log('Das oberste Element des entfernten Stapels ist: '+stack.pop());
console.log('Das oberste Element des Stapels ist: '+stack.peek());
console.log('Ist der Stapel leer: '+stack.isEmpty());
console.log('Die Anzahl der Elemente im Stapel ist: ' + stack.size());
console.log('Der Inhalt der Stapelstruktur ist:');
Konsole.log(stack.toString());

Die Ausgabe ist:

Aufbau erfolgreich.
Schauen wir uns ein Beispiel an!

3. Konvertieren Sie Dezimalzahlen in Binärzahlen

Wie konvertiert man Dezimalzahlen in Binärzahlen?

Um Dezimalzahlen in Binärzahlen umzuwandeln, können wir die Dezimalzahl durch 2 teilen, den Rest in den Stapel schieben, bis das Ergebnis 0 ist, und schließlich die Elemente nacheinander in den Stapel verschieben, um das Endergebnis zu erhalten.

Wie in der folgenden Abbildung dargestellt:

Der spezifische Code lautet:

 Funktion Stack(){
     diese.Artikel = [];
     //In den Stapel pushen Stack.prototype.push = function(element){
         dies.items.push(element);
     }
     //Aus Stack.prototype.pop = function(){ auswerfen
         gibt this.items.pop() zurück;
     }
     //Beurteilen, ob der Stapel leer ist Stack.prototype.isEmpty = function(){
         wenn (this.items.length == 0) {
             gibt true zurück;
         }anders{
             gibt false zurück;
         }
     }
 }
 Funktion decToBin(decNumber){
      var stack = neuer Stapel;
      während(Dezzahl>0){
          //Rest holen und in den Stapel legen stack.push(decNumber%2);
          //Neuen Divisor holen decNumber = Math.floor(decNumber/2);
      }
      //Holen Sie sich das oberste Element des Stapels var str = '';
      während(!stack.isEmpty()){
          str += stack.pop();
      }
      gibt str zurück;
  }
 console.log('100 in Binärzahl umgewandelt ist: '+decToBin(100));
 console.log('50 in Binärzahl konvertiert ist: '+decToBin(50));
 console.log('20 in Binärcode konvertiert ist: '+decToBin(20));
 console.log('34 in Binärcode konvertiert ist: '+decToBin(34));

Die Ausgabe ist:

Dies ist das Ende dieses Artikels über den detaillierten Prozess der Implementierung der Stapelstruktur durch JavaScript . Weitere relevante Inhalte zur Implementierung der Stapelstruktur durch JavaScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Prozesses zur Implementierung der Stapelstruktur in JavaScript
  • Detaillierte Erklärung von Stack-Beispielen in JS-Algorithmen und Datenstrukturen
  • Implementierung und Verwendungsbeispiele für JS-Stack-Klassen
  • Anwendungsbeispiel für den JavaScript-Datenstrukturstapel

<<:  Eine neue CSS-Bildersatztechnik (Hintergrundanzeige und Textverschiebung vom Bildschirm), um 9999 Pixeln Lebewohl zu sagen

>>:  Verschiedene Methoden zum Implementieren der Eingabeaufforderungsfunktion eines Textfelds in HTML

Artikel empfehlen

So sichern Sie MySQL-Kontoinformationen elegant

Vorwort: Ich bin kürzlich auf das Problem der Ins...

Verwenden Sie three.js, um coole 3D-Seiteneffekte im Acid-Stil zu erzielen

In diesem Artikel wird hauptsächlich die Verwendu...

JavaScript generiert dynamisch eine Tabelle mit Zeilenlöschfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für das Problem von var in einer for-Schleife

Vorwort var ist eine Möglichkeit, Variablen in ES...

So verwenden Sie Indizes zur Optimierung von MySQL ORDER BY-Anweisungen

Tabelle erstellen und Index erstellen Tabelle tbl...

Was tun, wenn Sie Ihr MySQL-Passwort vergessen?

Lösung zum Vergessen des MySQL-Passworts: [root@l...

HTML+CSS zur Realisierung einer einfachen Navigationsleistenfunktion

Ohne weitere Umschweife komme ich gleich zum Code...

Webdesign-Tutorial (1): Schritte und Gesamtlayout

<br /> Hinweis: Alle Texte, mit Ausnahme der...

JavaScript-Verlaufsobjekt erklärt

Inhaltsverzeichnis 1. Routennavigation 2. API zur...

Beispielcode eines CSS-responsiven Layoutsystems

Responsive Layoutsysteme sind in den heute gängig...