Verwandte Empfehlungen: Javascript-Tutorial
Aus übergeordneter Sicht ist eine Warteschlange eine Datenstruktur, die es uns ermöglicht, jedes Datenelement in der Reihenfolge zu verarbeiten, in der es in der Datenbank gespeichert ist.
Die Warteschlange unterstützt zwei Hauptoperationen: Einreihen und Entfernen aus der Warteschlange. Darüber hinaus kann es hilfreich sein, Peek- und Längenoperationen für die Warteschlange durchzuführen.
Der Enqueue-Vorgang in der obigen Abbildung fügt Element 8 am Ende ein und 8 wird zum Ende der Warteschlange.
queue.enqueue(8);
Im Bild oben kehrt der Vorgang zum Entfernen aus der Warteschlange zurück und entfernt Element 7 aus der Warteschlange. Nach dem Entfernen aus der Warteschlange wird Element 2 zum neuen Kopfelement.
queue.dequeue(); // => 7
Element 7 ist der Anfang der Warteschlange im Bild oben, und der Inspektionsvorgang gibt nur Header (Element) 7 zurück, ohne die Warteschlange zu ändern.
queue.peek(); // => 7
In der Warteschlange im Bild befinden sich 4 Elemente: 4, 6, 2 und 7. Daher beträgt die Warteschlangenlänge 4.
queue.length; // => 4
Konstante Zeit O(1) bedeutet, dass unabhängig von der Warteschlangengröße (sie kann 10 oder 1 Million Elemente haben): Einreihungs-, Aus-Warteschlangen-, Peek- und Längenoperationen alle gleichzeitig ausgeführt werden müssen.
Schauen wir uns eine mögliche Implementierung einer Warteschlangendatenstruktur an, wobei die Anforderung beibehalten wird, dass alle Operationen in konstanter Zeit O(1) ausgeführt werden müssen.
Klassenwarteschlange { Konstruktor() { this.items = {}; this.headIndex = 0; this.tailIndex = 0; } enqueue(item) { this.items[this.tailIndex] = item; this.tailIndex++; } dequeue() { const item = this.items[this.headIndex]; delete this.items[this.headIndex]; this.headIndex++; Artikel zurücksenden; } peek() { return this.items[this.headIndex]; } get length() { return this.tailIndex - this.headIndex; } } const queue = new Queue(); queue.enqueue(7); queue.enqueue(2); queue.enqueue(6); queue.enqueue(4); queue.dequeue(); // => 7 queue.peek(); // => 2 queue.length; // => 3
const queue = new Queue() ist, wie eine Instanz einer Warteschlange erstellt wird.
Rufen Sie die Methode queue.enqueue(7) auf, um Element 7 in die Warteschlange zu stellen.
queue.dequeue() entfernt ein Kopfelement aus der Warteschlange, während queue.peek() nur einen Blick von Anfang an wirft.
Schließlich zeigt queue.length an, wie viele Elemente noch in der Warteschlange sind.
Zur Implementierung: Innerhalb der Queue-Klasse speichert das einfache Objekt this.items die Elemente in der Warteschlange nach numerischem Index. Der Index des Kopfelements wird von this.headIndex verfolgt, und der Index des Endelements wird von this.tailIndex verfolgt.
Die Methoden queue(), dequeue(), peek() und length() der Klasse Queue verwenden nur:
Attributzugriff (z. B. this.items[this.headIndex]), oder arithmetische Operationen ausführen (z. B. this.headIndex++).
Daher beträgt die zeitliche Komplexität dieser Methoden die konstante Zeit O(1).
Die Warteschlangendatenstruktur ist eine Art „First In, First Out“ (FIFO): Das früheste Element, das in die Warteschlange gestellt wird, ist das früheste Element, das aus der Warteschlange entfernt wird.
Warteschlangen haben zwei Hauptoperationen: Einreihen und Entfernen aus der Warteschlange. Darüber hinaus können Warteschlangen über Hilfsoperationen wie Ansicht und Länge verfügen.
Alle Warteschlangenoperationen müssen O(1) in konstanter Zeit ausführen.
Verwandte Empfehlungen: JavaScript-Lern-Tutorial.
Das Obige ist eine detaillierte Erklärung der Implementierung von Warteschlangen in JavaScript mit Beispielen und Bildern. Weitere Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.