


Detaillierte Einführung in Warteschlangen in JavaScript (Codebeispiele)
Dieser Artikel bietet Ihnen eine detaillierte Einführung (Codebeispiel) über Warteschlangen in JavaScript. Ich hoffe, dass er für Freunde hilfreich ist.
Definition von Warteschlange
Eine Warteschlange ist eine geordnete Menge von Elementen, die dem First-In-First-Out-Prinzip folgt. Der Unterschied zu einem Stapel besteht darin, dass der Stapel Wird gepusht oder gepoppt Stapeloperationen werden alle am Anfang des Stapels ausgeführt, während Warteschlangen Elemente am Ende der Warteschlange hinzufügen und Elemente am Anfang der Warteschlange entfernen Zur Darstellung des Prozesses wird ein Diagramm verwendet:
Verwendung Ein anschaulicheres Beispiel ist: Warteschlangendienst. Die Person, die sich zuerst anstellt, erhält den Dienst immer zuerst. Die Situation des Warteschlangenspringens wird natürlich nicht berücksichtigt
Erstellung der Warteschlange
und des Stapels Die Erstellung ist ähnlich. Erstellen Sie zunächst eine Funktion, die die Warteschlange darstellt, und definieren Sie dann ein Array, um die Elemente in der Warteschlange zu speichern:
function Queue() { let items = [] }
Nachdem Sie die Warteschlange erstellt haben, müssen Sie einige Methoden dafür definieren. Im Allgemeinen enthält die Warteschlange die folgenden Methoden:
enqueue(element): Fügen Sie am Ende ein neues Element hinzu queue
dequeue(): Entfernt das erste Element der Warteschlange und gibt entfernte Elemente zurück
front(): Gibt das erste Element in der Warteschlange zurück Warteschlange, und die Warteschlange nimmt keine Änderungen vor
isEmpty(): Wenn die Warteschlange kein Element enthält, wird true zurückgegeben, andernfalls wird false zurückgegeben
-
size(): Gibt die Anzahl der in der Warteschlange enthaltenen Elemente zurück
Spezifische Implementierung:
function Queue() { let items = [] // 向队列的尾部添加新元素 this.enqueue = function (element) { items.push(element) } // 遵循先进先出原则,从队列的头部移除元素 this.dequeue = function () { return items.shift() } // 返回队列最前面的项 this.front = function () { return items[0] } // 返回队列是否为空 this.isEmpty = function () { return items.length === 0 } // 返回队列的长度 this.size = function () { return items.length } // 打印队列,方便观察 this.print = function () { console.log(items.toString()) } }
Nutzung der Warteschlange
Als nächstes schauen wir uns die Verwendung der Warteschlange an:
let queue = new Queue() queue.enqueue('a') queue.enqueue('b') queue.enqueue('c') queue.dequeue() queue.print()
Fügen Sie zuerst drei Elemente zur Warteschlange hinzu: a, b, c, entfernen Sie dann ein Element aus der Warteschlange und drucken Sie schließlich die vorhandene Warteschlange aus Veranschaulichen Sie diesen Prozess gemeinsam:
es6 implementiert Queue
Ähnlich wie bei der Implementierung der Stack-Klasse können Sie auch die Syntax der es6-Klasse verwenden Um die Queue-Klasse zu implementieren, verwenden Sie WeakMap, um private Attributelemente zu speichern, und verwenden Sie Abschlüsse, um die Queue-Klasse zurückzugeben: Schauen wir uns die spezifische Implementierung an:
let Queue = (function () { let items = new WeakMap class Queue { constructor () { items.set(this, []) } enqueue (element) { let q = items.get(this) q.push(element) } dequeue () { let q = items.get(this) return q.shift() } front () { let q = items.get(this) return q[0] } isEmpty () { let q = items.get(this) return q.length === 0 } size () { let q = items.get(this) return q.length } print () { let q = items.get(this) console.log(q.toString()) } } return Queue })() let queue = new Queue() queue.enqueue('a') queue.enqueue('b') queue.enqueue('c') queue.dequeue() queue.print()
Priority Queue
Prioritätswarteschlange, wie der Name schon sagt: Jedes Element in der Warteschlange hat seine eigene Priorität. Beim Einfügen wird der Einfügevorgang entsprechend der Prioritätsreihenfolge ausgeführt, was sich etwas von der vorherigen Warteschlangenimplementierung unterscheidet Schauen wir uns den spezifischen Code an:
function PriorityQueue() { let items = [] // 队列元素,多定义一个优先级变量 function QueueElement(element, priority) { this.element = element this.priority = priority } this.enqueue = function (element, priority) { let queueElement = new QueueElement(element, priority) let added = false for (let i = 0; i <p> Wenn die Warteschlange leer ist, fügen Sie sie andernfalls direkt zur Warteschlange hinzu Je höher die Priorität, desto höher wird die Priorität an der Spitze der Warteschlange platziert. Verwenden wir ein Diagramm, um den Aufrufvorgang darzustellen: <br></p><p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/image/471/355/539/1550021327400018.png" class="lazy" title="1550021327400018.png" alt="Detaillierte Einführung in Warteschlangen in JavaScript (Codebeispiele)"></p> <p style="max-width:90%"><strong>Zirkuläre Warteschlange</strong></p><p> Wie der Name schon sagt, ist die zirkuläre Warteschlange: Sie erhalten eine Zahl, durchlaufen dann die Warteschlange, entfernen ein Element vom Anfang der Warteschlange und fügen es dann hinzu Wenn die Schleife die angegebene Zahl erreicht, springen Sie aus der Schleife und bewegen Sie sich vom Anfang der Warteschlange, bis ein Element übrig bleibt: </p>rrree
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Warteschlangen in JavaScript (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Bei der Verwendung komplexer Datenstrukturen in Java wird Comparator verwendet, um einen flexiblen Vergleichsmechanismus bereitzustellen. Zu den spezifischen Schritten gehören: Definieren einer Komparatorklasse und Umschreiben der Vergleichsmethode, um die Vergleichslogik zu definieren. Erstellen Sie eine Komparatorinstanz. Verwenden Sie die Methode „Collections.sort“ und übergeben Sie die Sammlungs- und Komparatorinstanzen.

Datenstrukturen und Algorithmen sind die Grundlage der Java-Entwicklung. In diesem Artikel werden die wichtigsten Datenstrukturen (wie Arrays, verknüpfte Listen, Bäume usw.) und Algorithmen (wie Sortier-, Such-, Diagrammalgorithmen usw.) ausführlich untersucht. Diese Strukturen werden anhand praktischer Beispiele veranschaulicht, darunter die Verwendung von Arrays zum Speichern von Bewertungen, verknüpfte Listen zum Verwalten von Einkaufslisten, Stapel zum Implementieren von Rekursionen, Warteschlangen zum Synchronisieren von Threads sowie Bäume und Hash-Tabellen für schnelle Suche und Authentifizierung. Wenn Sie diese Konzepte verstehen, können Sie effizienten und wartbaren Java-Code schreiben.

Referenztypen sind ein spezieller Datentyp in der Go-Sprache. Ihre Werte speichern nicht direkt die Daten selbst, sondern die Adresse der gespeicherten Daten. In der Go-Sprache umfassen Referenztypen Slices, Karten, Kanäle und Zeiger. Ein tiefes Verständnis der Referenztypen ist entscheidend für das Verständnis der Speicherverwaltungs- und Datenübertragungsmethoden der Go-Sprache. In diesem Artikel werden spezifische Codebeispiele kombiniert, um die Merkmale und Verwendung von Referenztypen in der Go-Sprache vorzustellen. 1. Slices Slices sind einer der am häufigsten verwendeten Referenztypen in der Go-Sprache.

Der AVL-Baum ist ein ausgewogener binärer Suchbaum, der schnelle und effiziente Datenoperationen gewährleistet. Um ein Gleichgewicht zu erreichen, führt es Links- und Rechtsdrehungen durch und passt Teilbäume an, die das Gleichgewicht verletzen. AVL-Bäume nutzen den Höhenausgleich, um sicherzustellen, dass die Höhe des Baums im Verhältnis zur Anzahl der Knoten immer klein ist, wodurch Suchoperationen mit logarithmischer Zeitkomplexität (O(logn)) erreicht werden und die Effizienz der Datenstruktur auch bei großen Datensätzen erhalten bleibt.

Überblick über das Java Collection Framework Das Java Collection Framework ist ein wichtiger Teil der Programmiersprache Java. Es stellt eine Reihe von Containerklassenbibliotheken bereit, die Daten speichern und verwalten können. Diese Containerklassenbibliotheken verfügen über unterschiedliche Datenstrukturen, um den Datenspeicher- und -verarbeitungsanforderungen in verschiedenen Szenarien gerecht zu werden. Der Vorteil des Sammlungsframeworks besteht darin, dass es eine einheitliche Schnittstelle bietet, die es Entwicklern ermöglicht, verschiedene Containerklassenbibliotheken auf die gleiche Weise zu betreiben, wodurch die Entwicklungsschwierigkeiten verringert werden. Datenstrukturen des Java-Sammlungsframeworks Das Java-Sammlungsframework enthält eine Vielzahl von Datenstrukturen, von denen jede ihre eigenen einzigartigen Eigenschaften und anwendbaren Szenarien aufweist. Im Folgenden sind einige gängige Datenstrukturen des Java Collection Frameworks aufgeführt: 1. Liste: Liste ist eine geordnete Sammlung, die die Wiederholung von Elementen ermöglicht. Li

Überblick über die PHPSPL-Datenstrukturbibliothek Die PHPSPL-Datenstrukturbibliothek (Standard PHP Library) enthält eine Reihe von Klassen und Schnittstellen zum Speichern und Bearbeiten verschiedener Datenstrukturen. Zu diesen Datenstrukturen gehören Arrays, verknüpfte Listen, Stapel, Warteschlangen und Mengen, von denen jede einen bestimmten Satz von Methoden und Eigenschaften zum Bearbeiten von Daten bereitstellt. Arrays In PHP ist ein Array eine geordnete Sammlung, die eine Folge von Elementen speichert. Die SPL-Array-Klasse bietet erweiterte Funktionen für native PHP-Arrays, einschließlich Sortierung, Filterung und Zuordnung. Hier ist ein Beispiel für die Verwendung der SPL-Array-Klasse: useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

Eine eingehende Untersuchung der Geheimnisse der Datenstruktur der Go-Sprache erfordert spezifische Codebeispiele. Als prägnante und effiziente Programmiersprache zeigt die Go-Sprache auch ihren einzigartigen Charme bei der Verarbeitung von Datenstrukturen. Datenstruktur ist ein Grundkonzept der Informatik, das darauf abzielt, Daten so zu organisieren und zu verwalten, dass sie effizienter abgerufen und bearbeitet werden können. Indem wir uns eingehend mit den Geheimnissen der Datenstruktur der Go-Sprache befassen, können wir besser verstehen, wie Daten gespeichert und verarbeitet werden, und so die Programmiereffizienz und Codequalität verbessern. 1. Array Array ist eine der einfachsten Datenstrukturen

Die Hash-Tabelle kann zur Optimierung von PHP-Array-Schnittpunkt- und Vereinigungsberechnungen verwendet werden, wodurch die Zeitkomplexität von O(n*m) auf O(n+m) reduziert wird. Die spezifischen Schritte sind wie folgt: Verwenden Sie eine Hash-Tabelle, um die Elemente von zuzuordnen Wandeln Sie das erste Array in einen booleschen Wert um, um schnell herauszufinden, ob das Element im zweiten Array vorhanden ist, und um die Effizienz der Schnittpunktberechnung zu verbessern. Verwenden Sie eine Hash-Tabelle, um die Elemente des ersten Arrays als vorhanden zu markieren, und fügen Sie dann die Elemente des zweiten Arrays nacheinander hinzu, wobei Sie vorhandene Elemente ignorieren, um die Effizienz der Vereinigungsberechnungen zu verbessern.
