Tags :. données file d’attente Console fonction photo la mise en œuvre de la file d’attente HTTP requiert également une méthode
Une file d’attente est un nœud de données avancées, premier sorti. Files d’attente peuvent uniquement ajouter des éléments à la fin de l’équipe et supprimer des éléments dans la partie supérieure de l’équipe, qui n’est pas identique à la pile. Il est utilisé pour stocker les données ordonnées. Files d’attente, comme nos files d’attente quotidiennes, sont à l’avant-garde de la première entreprise, et les nouveaux arrivants peuvent seulement s’alignent à l’arrière. Ces structures de données sont utilisés dans de nombreux endroits dans la programmation des files d’attente.
Définir l’exploitation d’une file d’attente
Montre deux opérations de la file d’attente, se joindre à l’équipe et de l’équipe. L’action sortante est de supprimer l’élément opposé, et le fonctionnement de la file d’attente est d’ajouter des éléments à la fin de l’équipe. En outre, nous devons être en mesure d’obtenir les éléments de la première et la fin de l’équipe ou les éléments de l’équipe, ainsi que la longueur de la file d’attente et une façon de vider la file d’attente, afin que nous définissons la méthode de la file d’attente.
- Enqueue () rejoindre la file d’attente
- Dequeue () hors de l’équipe
- Avant () retourne au chef d’équipe
- (Arrière) retour en arrière de l’équipe
- ToString () retourne tous les éléments dans les files d’attente
- Length () retourne la longueur de la file d’attente
- File d’attente vide clair ()
Mise en place de files d’attente
En JavaScript, les tableaux présentent des inconvénients qui ne sont pas disponibles dans les tableaux des autres langages de programmation, des éléments peuvent être ajoutés directement à la fin du tableau en utilisant uniquement la méthode de () push du tableau et la méthode de () Maj peut être utilisée pour supprimer le premier élément du tableau. Il est logique de l’utilisation de tableaux pour mettre en œuvre des files d’attente.
Se préparer à commencer à appliquer la classe file d’attente pour les colonnes, en commençant par le constructeur ;
function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; this.toString = toString; this.length = length;}
Ensuite, vous commencez à mettre en œuvre les différentes méthodes pour la colonne.
() La méthode enqueue ajoute un élément à la fin de l’équipe, () la méthode Dequeue supprime l’élément au sommet de l’équipe :
Fonction Enqueue (Element) {this.dataStore.push (élément) ; Fonction de la place le nouvel élément à la fin de l’équipe} dequeue () {return this.dataStore.shift () ; Supprimez l’élément d’en-tête de l’équipe et retourne cet élément à}
Le () avant et arrière () méthodes sont les éléments qui renvoient la file d’attente à chef d’équipe et la queue de l’équipe, respectivement :
Fonction recto () {return this.dataStore[0] ; Retourne le premier élément de l’équipe} function arrière () {return This.datastore [this.datastore.length-1] ; Retour à l’élément de l’équipe de queue}
La méthode toString affiche tous les éléments dans la file d’attente :
Function toString () {var retStr = ' ; This.dataStore.forEach (Val = > {//traverse la file d’attente pour retourner retStr += val + « \n » par l’orthographe de tous les éléments dans la file d’attente en chaînes ; }); Return retStr ;}
La méthode de () longueur renvoie la longueur de la file d’attente et la méthode clear vide la file d’attente :
Fonction Length () {return this.dataStore.length ;} Fonction Clear () {this.dataStore.length = 0 ; Vider la file d’attente en plaçant le 0来 long de la file d’attente}
De cette façon, la structure de données de la file d’attente a été mis en place avec JavaScript. Prochaine épreuve.
Le test de la file d’attente
Code de test :
Q CONST = new file () ; Q.enqueue (« Java ») ; Q.enqueue (« php ») ; Q.enqueue (« Python ») console.log ("tous les éléments dans la file d’attente : ') ; console.log () Q.toString () ; Q.dequeue () console.log (tous les éléments après ' hors de l’équipe : ') ; console.log (q.toString ()) ; console.log ("élément head équipe :" + Q.front ()) ; Console.log ("élément queue collectif : ' + q.back ()) ; console.log (" longueur de la file d’attente : ' + q.length ()) ; Q.clear () ; console.log (' longueur après avoir vidé la file d’attente : ' + q.length ()) ;
Résultat de la sortie :
La structure de production répond aux attentes.
Files d’attente prioritaires
En général, les éléments qui sont supprimés de la file d’attente doivent être les premiers éléments à se joindre à l’équipe. Cependant, il existe des circonstances n’ont pas à respecter l’accord de la première place. Par exemple, dans la file d’attente des urgences, le médecin déterminera la priorité du service selon la gravité de l’état du patient. Dans ces files d’attente, il est possible que les éléments supprimés de la file d’attente ne sont pas les premiers éléments à assembler. Dans ce cas, vous avez besoin de simuler à l’aide d’une structure de données appelée une file d’attente prioritaire.
Ensuite, nous prenons la salle d’urgence queuing à titre d’exemple d’atteindre les files d’attente prioritaires suivants.
Dans l’antichambre de la salle d’urgence, l’infirmière traitant évalue la gravité de l’état du patient, puis donne un code de priorité et le patient prioritaire est traité chez un patient de faible priorité, et les patients de priorité même consulter un médecin dans l’ordre dans lequel ils servent tout d’abord.
Tout d’abord, définir les objets qui stockent des éléments de la file d’attente et ensuite construire notre système de file d’attente de priorité :
Fonction de Patient (nom, code) {myidname = nom ; This.code = code ; Code de priorité, entier, au nom de patient prioritaire}
Maintenant, vous avez besoin de redéfinir la méthode dequeue afin qu’il supprime des éléments dans la file d’attente qui ont la priorité la plus élevée. Nous avons la plus haute priorité pour les éléments qui spécifient la valeur minimale du code de priorité. La nouvelle méthode Dequeue traverse la baie de stockage sous-jacent de la file d’attente, d'où l’élément avec le plus petit code de priorité se trouve, et puis l’élément est supprimé. La nouvelle méthode de () Dequeque est définie comme suit :
Function Dequeue () {laisser priorité = this.dataStore[0].code ; Laissez pos = 0 ; Utilisez une méthode de recherche séquentielle simple pour trouver la plus haute priorité élément this.dataStore.forEach ((p, i) = > {si (P.code) {priorité) {priorité = P.code ; Pos = i ; } }); Retourne l’élément supprimé de la file d’attente de retour this.dataStore.splice (POS, 1) ;}
Enfin, la méthode toString est re-mis en œuvre pour afficher l’objet Patient.
Function toString () {var retStr = « » ; This.dataStore.forEach (P = > {retStr += ' priorité ${p.name} : ${p.code}\n ' ; }); Return retStr ;}
Par la présente, la file d’attente prioritaire d’urgence simulée est terminée et nous avons testé.
Var p = nouveau Patient (« petit One », 5) ; ED const = new file () ; Ed.enqueue (p) ; p = nouveau Patient (« Small Two », 4), Ed.enqueue (p) ; p = nouveau Patient ( » Junior ", 6) ; Ed.enqueue (p) ; p = nouveau Patient (« petit Four », 1) ; Ed.enqueue (p) ; p = nouveau Patient (« cinq petits », 1) ; Console.log (" personnes en ligne : ') ; Console.log (ed.toString ()) ; //first ronde ed.enqueue (p) ; var vu = Ed.dequeue () ; console.log ("les patients dans le processus en cours :" + seen[0].name) ; Console.log ("personne en attente : ') console.log (ed.toString ()) ; //next ronde du var vu = Ed.dequeue () ; console.log (" Patients ramassés : ' + seen[0].name) Console.log ("personne en attente : ') console.log (ed.toString ()) ; //next ronde du var vu = Ed.dequeue () ; console.log (' Patients ramassés : ' + vu .name [0] ) ; Console.log ("personne en attente : ') console.log (ed.toString ()) ;
Résultats d’entrée :
Comme vous pouvez le voir, les diagnostics sont ramassés par la file d’attente de priorité, un par un.
Structure de données JavaScript--files d’attente