


Introduction détaillée aux files d'attente en JavaScript (exemples de code)
Le contenu de cet article est une introduction détaillée (exemple de code) sur les files d'attente en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Définition de la file d'attente
Une file d'attente est un ensemble ordonné d'éléments qui suit le principe du premier entré, premier sorti. La différence avec une pile est que la pile. est poussé ou sauté Les opérations de pile sont toutes effectuées en haut de la pile, tandis que les files d'attente ajoutent des éléments à la fin de la file d'attente et suppriment des éléments du haut de la file d'attente. Un diagramme est utilisé pour représenter le processus :
Création de file d'attente
et pile La création est similaire. Créez d'abord une fonction représentant la file d'attente, puis définissez un tableau pour enregistrer les éléments dans la file d'attente :function Queue() { let items = [] }
- enqueue(element) : Ajouter un nouvel élément à la fin. de la file d'attente
- dequeue() : Supprime le premier élément de la file d'attente, Et renvoie l'élément supprimé
- front() : Renvoie le premier élément de la file d'attente sans apporter de modifications à la file d'attente
- isEmpty() : S'il n'y a aucun élément dans la file d'attente, renvoie vrai, sinon renvoie faux
- size() : Renvoie le nombre d'éléments contenus dans la file d'attente
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()) } }
Utilisation de la file d'attente
Regardons ensuite l'utilisation de la file d'attente :let queue = new Queue() queue.enqueue('a') queue.enqueue('b') queue.enqueue('c') queue.dequeue() queue.print()
Queue d'implémentation es6
De la même manière que l'implémentation de la classe Stack, vous pouvez utilisez également la syntaxe de la classe es6 pour implémenter la classe Queue, utilisez WeakMap pour enregistrer les éléments d'attributs privés et utilisez des fermetures pour renvoyer la classe Queue :
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()
File d'attente prioritaire.
File d'attente prioritaire, comme son nom l'indique : chaque élément de la file d'attente aura sa propre priorité, et sera inséré par ordre de priorité. L'opération d'insertion est un peu différente de l'implémentation de la file d'attente précédente. Il y a plus d'éléments dans la file d'attente avec des attributs avancés. Regardons le code spécifique :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 Si la file d'attente est vide lorsque vous rejoignez la file d'attente, ajoutez-la directement, sinon la comparaison est faite. la priorité, plus la priorité est élevée. Plus la priorité est élevée, plus elle est placée haut en tête de la file d'attente. Voici une image pour voir le processus d'appel : <p><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="Introduction détaillée aux files dattente en JavaScript (exemples de code)">. </p><p style="max-width:90%">File d'attente circulaire<strong></strong></p>File d'attente circulaire, comme son nom l'indique : étant donné un numéro, puis parcourt la file d'attente, supprime un élément du début de la file d'attente, puis l'ajoute à la fin de la file d'attente. Lorsque la boucle atteint le nombre donné. Lorsque le nombre est déterminé, sortez de la boucle et supprimez un élément de la tête de la file d'attente jusqu'à ce qu'il reste un élément. Regardons le code spécifique : <p></p>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lors de l'utilisation de structures de données complexes en Java, Comparator est utilisé pour fournir un mécanisme de comparaison flexible. Les étapes spécifiques comprennent : la définition d’une classe de comparaison et la réécriture de la méthode de comparaison pour définir la logique de comparaison. Créez une instance de comparaison. Utilisez la méthode Collections.sort, en transmettant les instances de collection et de comparateur.

Les structures de données et les algorithmes sont à la base du développement Java. Cet article explore en profondeur les structures de données clés (telles que les tableaux, les listes chaînées, les arbres, etc.) et les algorithmes (tels que le tri, la recherche, les algorithmes graphiques, etc.) en Java. Ces structures sont illustrées par des exemples pratiques, notamment l'utilisation de tableaux pour stocker les scores, de listes chaînées pour gérer les listes de courses, de piles pour implémenter la récursion, de files d'attente pour synchroniser les threads, ainsi que d'arbres et de tables de hachage pour une recherche et une authentification rapides. Comprendre ces concepts vous permet d'écrire du code Java efficace et maintenable.

Les types de référence sont un type de données spécial dans le langage Go. Leurs valeurs ne stockent pas directement les données elles-mêmes, mais l'adresse des données stockées. Dans le langage Go, les types de référence incluent des tranches, des cartes, des canaux et des pointeurs. Une compréhension approfondie des types de référence est cruciale pour comprendre les méthodes de gestion de la mémoire et de transfert de données du langage Go. Cet article combinera des exemples de code spécifiques pour présenter les caractéristiques et l'utilisation des types de référence dans le langage Go. 1. Tranches Les tranches sont l'un des types de référence les plus couramment utilisés dans le langage Go.

L'arbre AVL est un arbre de recherche binaire équilibré qui garantit des opérations de données rapides et efficaces. Pour atteindre l'équilibre, il effectue des opérations de virage à gauche et à droite, en ajustant les sous-arbres qui violent l'équilibre. Les arbres AVL utilisent l'équilibrage de hauteur pour garantir que la hauteur de l'arbre est toujours petite par rapport au nombre de nœuds, réalisant ainsi des opérations de recherche de complexité temporelle logarithmique (O (logn)) et maintenant l'efficacité de la structure de données même sur de grands ensembles de données.

Présentation de Java Collection Framework L'infrastructure de collection Java est une partie importante du langage de programmation Java. Elle fournit une série de bibliothèques de classes conteneur qui peuvent stocker et gérer des données. Ces bibliothèques de classes de conteneurs ont différentes structures de données pour répondre aux besoins de stockage et de traitement des données dans différents scénarios. L'avantage du framework de collection est qu'il fournit une interface unifiée, permettant aux développeurs d'exploiter différentes bibliothèques de classes de conteneurs de la même manière, réduisant ainsi la difficulté de développement. Structures de données de l'infrastructure de collection Java L'infrastructure de collection Java contient diverses structures de données, chacune ayant ses propres caractéristiques et scénarios applicables. Voici plusieurs structures de données courantes du cadre de collection Java : 1. Liste : Liste est une collection ordonnée qui permet de répéter des éléments. Li

Une étude approfondie des mystères de la structure des données du langage Go nécessite des exemples de code spécifiques. En tant que langage de programmation concis et efficace, le langage Go montre également son charme unique dans le traitement des structures de données. La structure des données est un concept de base en informatique, qui vise à organiser et gérer les données afin qu'elles puissent être consultées et manipulées plus efficacement. En apprenant en profondeur les mystères de la structure des données du langage Go, nous pouvons mieux comprendre comment les données sont stockées et exploitées, améliorant ainsi l'efficacité de la programmation et la qualité du code. 1. Array Array est l'une des structures de données les plus simples

Présentation de la bibliothèque de structures de données PHPSPL La bibliothèque de structures de données PHPSPL (Standard PHP Library) contient un ensemble de classes et d'interfaces pour stocker et manipuler diverses structures de données. Ces structures de données comprennent des tableaux, des listes chaînées, des piles, des files d'attente et des ensembles, chacun fournissant un ensemble spécifique de méthodes et de propriétés pour manipuler les données. Tableaux En PHP, un tableau est une collection ordonnée qui stocke une séquence d'éléments. La classe de tableau SPL fournit des fonctions améliorées pour les tableaux PHP natifs, notamment le tri, le filtrage et le mappage. Voici un exemple d'utilisation de la classe array SPL : useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

La table de hachage peut être utilisée pour optimiser les calculs d'intersection et d'union de tableaux PHP, réduisant ainsi la complexité temporelle de O(n*m) à O(n+m). Les étapes spécifiques sont les suivantes : Utilisez une table de hachage pour mapper les éléments de. le premier tableau à une valeur booléenne pour déterminer rapidement si l'élément du deuxième tableau existe et améliorer l'efficacité du calcul d'intersection. Utilisez une table de hachage pour marquer les éléments du premier tableau comme existants, puis ajoutez les éléments du deuxième tableau un par un, en ignorant les éléments existants pour améliorer l'efficacité des calculs d'union.
