JavaScript implementiert eine Warteschlange mit doppeltem Ende

JavaScript implementiert eine Warteschlange mit doppeltem Ende

In diesem Artikelbeispiel wird der spezifische Code von Javascript zur Implementierung von Warteschlangen mit doppeltem Ende zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. Doppelendige Warteschlange

Eine Deque ist eine spezielle Warteschlange, die es uns ermöglicht, Elemente gleichzeitig zum Front- und Back-End hinzuzufügen und daraus zu entfernen.

2. Anwendung von doppelseitigen Warteschlangen

Wenn eine Person, die gerade ein Ticket gekauft hat, einige einfache Informationen benötigt, kann sie zum Anfang der Schlange zurückkehren. Wenn die Person am Ende der Schlange es eilig hat, kann sie die Schlange verlassen.

3. Methode der Warteschlange mit zwei Enden

addFront(element): Diese Methode fügt ein neues Element an den Anfang der doppelseitigen Warteschlange ein.
addBack(Element): Diese Methode fügt dem hinteren Ende der doppelseitigen Warteschlange ein neues Element hinzu (die Implementierungsmethode ist dieselbe wie die Enqueue-Methode in der Queue-Klasse).
removeFront(): Diese Methode entfernt das erste Element von der Vorderseite der doppelseitigen Warteschlange
removeBack(): Diese Methode entfernt das erste Element vom hinteren Ende der doppelseitigen Warteschlange
peekFront(): Diese Methode gibt das erste Element der doppelseitigen Warteschlange zurück.
peekBack()): Diese Methode gibt das erste Element am hinteren Ende der doppelseitigen Warteschlange zurück.

4. Umsetzung

Klasse Deque{
           Konstruktor(){
               diese.Artikel = {};
               dies.Anzahl = 0;
               Dies.lowestCount = 0; 
           }

        // Füge ein neues Element am Anfang der Warteschlange mit zwei Enden hinzu addFront(element){
            wenn(dies.istEmpty()){
                dies.addBack(element);
            }
            sonst wenn(this.lowestCount > 0){
                dies.lowestCount --;
                diese.Elemente[diese.niedrigsteAnzahl] = Element;
            }
            anders{
                für (lass i = this.count;i>0;i--) {
                    diese.Artikel[i] = diese.Artikel[i-1]; 
                }
                Dies.niedrigsterAnzahl = 0;
                diese.Elemente[diese.niedrigsteAnzahl] = Element;
                dies.zählen++;
            }
        };
        addBack(element){
            dies.zählen++;
            diese.Elemente[diese.Anzahl-1] = Element;
        };
        entferneFront(){
            wenn(dies.istEmpty()){
                Rückgabe undefiniert;
            }
            const Ergebnis = this.items[this.lowestCount];
            lösche this.items[this.lowestCount];
            dies.lowestCount++;
            Ergebnis zurückgeben;
        };
        entfernenZurück(){
            wenn(dies.istEmpty()){
                Rückgabe undefiniert;
            }
            const Ergebnis = diese.Elemente[diese.Anzahl-1];
            lösche this.items[this.count-1];
            dies.zählen--;
            Ergebnis zurückgeben;
        };
        peekFront(){
            wenn(dies.istEmpty()){
                gibt null zurück;
            }
          gib diese.Elemente[diesen.niedrigstenAnzahl] zurück;
        };
        peekBack(){
            wenn(dies.istEmpty()){
                gibt null zurück;
            }
            gib diese.Elemente[diese.Anzahl-1] zurück;
        };
        istLeer(){
            gibt diesen.Anzahl zurück - diesen.niedrigstenAnzahl == 0;
        }
        Größe(){
            gib diesen.Anzahl - diesen.niedrigstenAnzahl zurück;
        }
        zuString(){
            wenn(dies.istEmpty()){
                zurückkehren '';
            }
            let objString = `${this.items[this.lowestCount]}`;
            für(var i=this.lowestCount+1;i<this.count;i++){
                objString = `${objString},${this.items[i]}`;
            }
            gibt objString zurück;
        }
        klar(){
            diese.items={};
            dies.Anzahl = 0;
            Dies.niedrigsterAnzahl = 0;
        }
   

       }

       const deque = new Deque();
       deque.addFront('John');
       deque.addFront('Jack');
       deque.addFront('Amy');
       deque.addBack('Lisa');
    // deque.removeFront();
    // deque.removeBack();
    Konsole.log(deque.size());
    Konsole.log(deque.toString());
    Konsole.log(Deque);
    console.log(deque.isEmpty());
       Konsole.log(deque.clear());
       Konsole.log(Deque);

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Implementierung und Anwendung von Warteschlangen und doppelseitigen Warteschlangen in JS
  • Schreiben Sie eine Ereigniswarteschlangenoperationsfunktion in js
  • Detaillierte Erläuterung der Stapelmethode und der Warteschlangenmethode des JavaScript-Arrays
  • JS-Implementierung der Warteschlangen- und Stapelmethode
  • Detaillierte Erläuterung der JavaScript-Warteschlangenfunktionen und der asynchronen Ausführung
  • Detaillierte Erklärung des Warteschlangenbeispiels in JS-Algorithmen und Datenstrukturen
  • JS-Implementierung eines Beispiels für die First-In-First-Out-Funktion der Warteschlange
  • Zirkulärer Warteschlangencode, der mithilfe eines Arrays in Javascript implementiert wurde
  • JavaScript-Warteschlangen, Prioritätswarteschlangen und Ringwarteschlangen
  • JS implementiert eine Methode zur Verwendung von zwei Warteschlangen zur Darstellung eines Stapels

<<:  Die am häufigsten verwendeten HTML-Tags zum Erstellen von Webseiten

>>:  Verwenden Sie CSS, um zwischen dem Dunkelmodus und dem Hellmodus zu wechseln

Artikel empfehlen

Eine Screenshot-Demo basierend auf Canvas in HTML

Geschrieben am Anfang Ich erinnere mich, dass ich...

Beispielcode zur Implementierung eines 3D-Bucheffekts mit CSS

Schauen wir uns zunächst ohne Umschweife die Rend...

Ubuntu MySQL-Version auf 5.7 aktualisiert

Vor einigen Tagen teilte die Bibliothek mit, dass...

So zeichnen Sie eine Schaltfläche in XAML als Kreis neu

Beim Verwenden des XAML-Layouts müssen manchmal ei...

Nginx verwendet den Gzip-Algorithmus zum Komprimieren von Nachrichten

Was ist HTTP-Komprimierung Manchmal werden relati...

So erstellen Sie einen pptpd-Dienst in Alibaba Cloud Ubuntu 16.04

1. Um ein PPTP-VPN aufzubauen, müssen Sie Port 17...

So legen Sie ein Kennwort für MySQL Version 5.6 auf dem Mac fest

MySQL kann bei der Installation festgelegt werden...

Lösen Sie schnell das Problem des langsamen Tomcat-Starts, super einfach

Heute habe ich einem Klassenkameraden geholfen, e...

Eine detaillierte Einführung in den Ausführungsmechanismus von JavaScript

Inhaltsverzeichnis 1. Das Konzept von Prozess und...

Allgemeine Shell-Skriptbefehle und zugehöriges Wissen unter Linux

Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...

Detaillierte Erklärung der Verwendung von publicPath in Webpack

Inhaltsverzeichnis Ausgabe Ausgabepfad Ausgabe.öf...

Detaillierte Erklärung zur Verwendung von Vue.prototype in Vue

Inhaltsverzeichnis 1. Einfaches Beispiel 2. Legen...