JavaScript realisiert den Warteschlangenstrukturprozess

JavaScript realisiert den Warteschlangenstrukturprozess

1. Warteschlangen verstehen

Im vorherigen Blog ging es um die eingeschränkte Datenstruktur – den Stapel. Werfen wir nun einen Blick auf die Queue .

  • Es handelt sich um eine eingeschränkte lineare Liste nach dem First-In-First-Out-Prinzip ( FIFO ), also first in first out , zuerst raus.
  • Die Einschränkung besteht darin, dass nur Löschvorgänge auf der Vorderseite der Tabelle zulässig sind.
  • Einlegevorgänge werden an der rear des Tisches durchgeführt.

Das Strukturdiagramm kann wie folgt ausgedrückt werden:

Etwas Ähnliches ist mit Warteschlangen im Leben: Wenn wir uns zum Beispiel anstellen, um etwas zu kaufen, gilt das Prinzip: Wer zuerst kommt, mahlt zuerst.

2. Kapselungswarteschlange

Die Warteschlangenstruktur wird ebenfalls in einem Array-Format implementiert. Erstellen Sie zunächst eine Klasse.

 Funktion Warteschlange(){
            
        }

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.

Allgemeine Vorgänge für Warteschlangen sind:

  • enqueue (Element): Füge ein (oder mehrere) neue Elemente am Ende der Warteschlange hinzu
  • dequeue() : Entfernt das erste Element in der Warteschlange und gibt das entfernte Element zurück.
  • front() : Gibt das erste Element in der Warteschlange zurück – das erste hinzuzufügende und das erste zu entfernende Element.
  • isEmpty() : Gibt „true“ zurück, wenn die Warteschlange keine Elemente enthält, andernfalls „false“
  • size() : Gibt die Anzahl der Elemente in der Warteschlange zurück
  • toString() : Konvertiert den Inhalt der Warteschlange in einen String

Jetzt implementieren wir es:

Funktion Warteschlange(){
     diese.Artikel = [];
     //Füge ein (oder mehrere) neue Elemente am Ende der Warteschlange hinzu enqueue()
     Queue.prototype.enqueue = Funktion(Element){
         dies.items.push(element);
     }
     //Entferne das erste Element in der Warteschlange (also das vorderste Element in der Warteschlange) dequeue()
     Warteschlange.prototype.dequeue = Funktion(){
          gibt this.items.shift() zurück;
      }
     //Gibt das erste Element in der Warteschlange zurück front()
     Warteschlange.prototype.front = Funktion() {
          gib diese Elemente zurück[0];
      }
     //Überprüfen, ob der Stapel leer ist isEmpty()
     Queue.prototype.isEmpty = Funktion(){
         gibt diese.Elemente.Länge zurück == 0;
     }
     //Gibt die Anzahl der in der Warteschlange enthaltenen Elemente zurück size()
     Warteschlange.Prototyp.Größe = Funktion(){
         gib diese.Elemente.Länge zurück;
     }
     //Konvertiere den Inhalt der Warteschlange in eine Zeichenfolge toString()
     Queue.prototype.toString = Funktion(){
         var str = '';
         für(var i =0;i<this.items.length;i++){
             str += diese.Elemente[i] + ' ';
         }
         gibt str zurück;
     }
 }   

Oben sehen Sie die Kapselung der Warteschlange. Überprüfen Sie sie nun:

 var Warteschlange = neue Warteschlange();
 Warteschlange.Warteschlange(10);
 Warteschlange.Warteschlange(20);
 Warteschlange.Warteschlange(30);
 Warteschlange.Warteschlange(40);
 Warteschlange.Warteschlange(50);
 konsole.log(Warteschlange);
 console.log('Das erste entfernte Element ist: ' + queue.dequeue());
 console.log('Das erste Element in der Warteschlange ist: ' + queue.front());
 console.log('Ist der Stapel leer: '+queue.isEmpty());
 console.log('Der Inhalt der Stapelstruktur ist:');
 Konsole.log(Warteschlange.toString());

Die Ausgabe ist:

Aufbau erfolgreich.

Schauen wir uns einen Fall an, bei dem das Päckchen unter Trommelschlag herumgereicht wird!

3. Der Fall der Blumenweitergabe durch Trommeln

Ursprüngliche Spielregeln:

  • Spielen Sie ein Spiel in der Klasse. Alle Schüler stehen im Kreis und geben einen Blumenstrauß von einem Schüler zum nächsten weiter.
  • Zu dieser Zeit schlägt ein Mann eine Trommel. Wenn die Trommel aufhört, wird derjenige, der die Blume hält, bestraft.

Ändern Sie die Spielregeln:

  • Ein paar Freunde spielen zusammen ein Spiel. Sie sitzen im Kreis und beginnen zu zählen. Die Person, die bis zu einer bestimmten Zahl zählt, scheidet automatisch aus.
  • Die letzte Person, die übrig bleibt, gewinnt. Von welcher Position aus gewinnt die letzte Person, die übrig bleibt?

Kapseln Sie eine warteschlangenbasierte Funktion:

  • Parameter: Namen aller Teilnehmer, Zahlen basierend auf
  • Ergebnis: Der Name der Person, die am Ende übrig bleibt

Der Code lautet wie folgt:

 // Warteschlangenfunktion Queue(){ einkapseln
     diese.Artikel = [];
     //Elemente am Ende hinzufügen Queue.prototype.enqueue = function(element){
         dies.items.push(element);
     }
     //Entferne das erste Element Queue.prototype.dequeue = function(){
         gibt this.items.shift() zurück;
     }
     //Gib das erste Element zurück Queue.prototype.front = function(){
         gib diese Elemente zurück[0];
     }
     //Gibt die Anzahl der in der Warteschlange enthaltenen Elemente zurück Queue.prototype.size = function(){
         gib diese.Elemente.Länge zurück;
     }
 }
 
 Funktion passGame(Namensliste,Anzahl){
     //Eine Warteschlange erstellen var queue = new Queue();
     //Alle Personen zur Warteschlange hinzufügen for(var i = 0;i<nameList.length;i++){
         Warteschlange.Warteschlange einreihen(Namensliste[i]);
     }
     //Spielen Sie das Spiel, während (queue.size() > 1) {
         //Die Personen vor num werden am Ende der Warteschlange hinzugefügt for(var i =1;i<num;i++){
             Warteschlange.in die Warteschlange stellen(Warteschlange.aus der Warteschlange entfernen());
         }
       //Personen mit Num-Nummern werden direkt aus der Warteschlange entfernt.dequeue();
    }
    //Gewinnerinformationen abrufen var endName = queue.front();
    console.log('Die verbleibenden Personen sind:' + endName);
    gibt nameList.indexOf(endName) zurück;
 }
 
 //Testvar nameList = ['a','b','c','d','e'];
 var g = passSpiel(Namensliste,5);
 console.log('Der Standort dieser Person ist: '+g);

Die Ausgabe ist:

Dies ist das Ende dieses Artikels über den Prozess der Implementierung einer Warteschlangenstruktur in JavaScript. Weitere relevante Inhalte zur Implementierung einer Warteschlangenstruktur in JavaScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • JavaScript-Warteschlangenstruktur Analyse des Warteschlangenimplementierungsprozesses
  • Beispielanalyse einer Datenstruktur-Warteschlangenanimation basierend auf JavaScript
  • Detaillierte Erklärung des Warteschlangenbeispiels in JS-Algorithmen und Datenstrukturen
  • Detaillierte Erläuterung des Prinzips der JavaScript-Datenstruktur und Algorithmus-Warteschlange sowie Anwendungsbeispiel
  • Datenstrukturen und Algorithmen in JavaScript (Teil 2): ​​Warteschlangen
  • JavaScript-Datenstruktur und Algorithmusstapel und -warteschlange

<<:  Bei einer guten Refaktorierung geht es nicht nur um die Refaktorisierung des Codes, sondern auch um die Refaktorisierung des Lebens.

>>:  Einführung in die grundlegenden Konzepte und Technologien der Webentwicklung

Artikel empfehlen

Detaillierte Erläuterung der Laderegeln der require-Methode in node.js

Laderegeln der Require-Methode Laden aus dem Cach...

Beispiel für Auslassungspunkte bei Überlauf von mehrzeiligem CSS-Text

Auslassungspunkte werden angezeigt, wenn mehrzeil...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...

Detaillierter Prozess der Vue-Front-End-Verpackung

Inhaltsverzeichnis 1. Verpackungsbefehl hinzufüge...

So installieren Sie MySQL auf CentOS und richten den Fernzugriff ein

1. Laden Sie die MySQL-Repo-Quelle herunter $ wge...

So passen Sie die Protokollebene von Nginx in Docker an

Inhaltsverzeichnis Einleitung Nginx-Dockerdatei N...

So leiten Sie eine PC-Adresse in Vue an eine Mobiladresse um

Anforderungen: Die PC-Seite und die mobile Seite ...

Vergleich mehrerer Beispiele zur Einfügungseffizienz in MySQL

Vorwort Aus beruflichen Gründen musste ich kürzli...

Der DOCTYPE-Modusauswahlmechanismus bekannter Browser

Dokumentumfang Dieser Artikel behandelt den Modus...

Zusammenfassung der JavaScript-Timertypen

Inhaltsverzeichnis 1.setInterval() 2.setTimeout()...

Optimieren der langsamen Abfrage von MySQL-Aggregatstatistikdaten

Vorne geschrieben Wenn wir in unserem täglichen L...