Table des matières
Algorithme d'opération d'insertion de file d'attente prioritaire
Algorithme d'opération d'insertion dans la file d'attente prioritaire
Maison développement back-end C++ Introduction à la file d'attente prioritaire en C/C++

Introduction à la file d'attente prioritaire en C/C++

Sep 13, 2023 pm 05:21 PM
编程 (programming) langue c file d'attente prioritaire

Une file d'attente prioritaire est une file d'attente dans laquelle des éléments sont insérés ou supprimés en fonction de la priorité qui leur est attribuée, où la priorité est une valeur entière comprise entre 0 et 10, où 0 représente l'élément avec la priorité la plus élevée et 10 représente l'élément avec L'élément ayant la priorité la plus élevée a la priorité la plus basse. La mise en œuvre d'une file d'attente prioritaire suit deux règles :

  • La donnée ou l'élément ayant la priorité la plus élevée sera exécuté avant la donnée ou l'élément ayant la priorité la plus basse.
  • Si deux éléments ont la même priorité, ils seront exécutés dans l'ordre dans lequel ils ont été ajoutés à la liste.

Il existe différentes structures de données disponibles qui peuvent être utilisées pour implémenter des files d'attente prioritaires telles que des piles, des files d'attente et des listes chaînées. Dans cet article, nous expliquerons la structure des données de file d'attente. Il existe deux façons d'implémenter une file d'attente prioritaire, par exemple :

  • Maintenir des files d'attente pour plusieurs priorités dans un seul tableau

    Une façon d'implémenter une file d'attente prioritaire consiste à maintenir une file d'attente pour chaque priorité. Nous pouvons stocker ces multiples files d'attente dans un tableau où chaque file d'attente a deux pointeurs, Front et Rear. Dans la file d'attente, le pointeur Front est utilisé pour insérer des éléments dans la file d'attente, et il est incrémenté de 1 à chaque fois qu'un élément est inséré ; l'autre pointeur est le pointeur arrière, utilisé pour supprimer ou supprimer des éléments de la file d'attente, et il est ; décrémenté à chaque fois qu'un élément est inséré, 1 est supprimé de la file d'attente. Enfin, à partir des positions des deux pointeurs on peut également déterminer le nombre d'éléments dans la file d'attente.

Introduction à la file dattente prioritaire en C/C++

REMARQUE - Si chaque file d'attente a la même taille, alors au lieu de créer plusieurs tableaux unidimensionnels, nous pouvons créer un tableau bidimensionnel.

Algorithme d'opération d'insertion de file d'attente prioritaire

insert(queue, data, priority)
   If(queue->Rear[priority] = MAX-1 AND queue->Front[priority] = 0) OR (queue->Rear[priority] +1 =queue->Front[priority])
      Print Overflow
   End
   IF queue->Rear[priority - 1] = MAX-1
      Set queue->Rear[priority - 1] = 0
   Else
      Set queue->Rear[priority] = queue->Rear[priority - 1] +1
   End
      Set queue->CQueue[priority - 1] [queue->Rear[priority - 1] = data
   IF queue->Front[priority - 1] = -1
      Set queue->Front[priority - 1] = 0
End
Copier après la connexion

Algorithme d'opération d'insertion dans la file d'attente prioritaire

delete(queue)
   Set flag = 0, priority = 0
      While priority <= MAX-1
         IF NOT queue->Front[priority] = -1
            Set flag = 1
            Set value = queue->CQueue[priority][queue->Front[priority]]
            IF queue->Front[priority] = queue->Rear[priority]
               Set queue->Front[priority] = queue->Rear[priority] = -1
            Else
            IF queue->Front[priority] = MAX-1
               Set queue->Front[priority] = 0
            Else
               Set queue->Front[priority] = queue->Front[priority] + 1
            End
         End
      Break
   End
   Set priority = priority +
End
If flag = 0
   Print underflow
Else
   Return value
End
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Dead Rails - Comment apprivoiser les loups
4 Il y a quelques semaines By DDD
Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel Java
1659
14
Tutoriel PHP
1259
29
Tutoriel C#
1233
24
Initialiseur désigné en langage C Initialiseur désigné en langage C Sep 01, 2023 am 08:49 AM

Dans la norme C90, nous devons initialiser le tableau dans un ordre fixe, comme initialiser l'index à la position 0, 1, 2, etc. À partir de la norme C99, ils ont introduit une fonctionnalité d'initialisation désignée en C. Ici, nous pouvons initialiser des éléments dans un ordre aléatoire. L'initialisation peut être effectuée à l'aide d'index de tableau ou de membres de structure. Cette extension n'est pas implémentée dans GNUC++. Si nous spécifions des index et entrons des valeurs, cela ressemblera à ceci - intarr[6]={[3]=20,[5]=40};orintarr[6]={[3]20,[5 ] 40};Cela équivaut à : intarr[6]={0,0,0,20,0,40};Nous pouvons également mettre une certaine plage d'éléments en utilisant la syntaxe suivante

Introduction à la file d'attente prioritaire en C/C++ Introduction à la file d'attente prioritaire en C/C++ Sep 13, 2023 pm 05:21 PM

Une file d'attente prioritaire est une file d'attente dans laquelle des éléments sont insérés ou supprimés en fonction de la priorité qui leur est attribuée, où la priorité est une valeur entière comprise entre 0 et 10, où 0 représente l'élément ayant la priorité la plus élevée et 10 représente l'élément ayant la priorité la plus élevée. Élément ayant la priorité la plus élevée L'élément ayant la priorité la plus basse. L'implémentation d'une file d'attente prioritaire suit deux règles : les données ou les éléments ayant la priorité la plus élevée seront exécutés avant les données ou les éléments ayant la priorité la plus basse. Si deux éléments ont la même priorité, ils seront exécutés dans l'ordre dans lequel ils ont été ajoutés à la liste. Il existe diverses structures de données disponibles qui peuvent être utilisées pour implémenter des files d'attente prioritaires telles que des piles, des files d'attente et des listes chaînées. Dans cet article, nous expliquerons la structure des données de file d'attente. Il existe deux manières d'implémenter la file d'attente prioritaire, par exemple : conserver plusieurs dans un seul tableau.

En langage C, paramètres de longueur variable des macros En langage C, paramètres de longueur variable des macros Aug 27, 2023 pm 10:49 PM

Nous savons que les fonctions peuvent être définies à l'aide de paramètres de longueur variable en langage C. Pour cela, nous devons utiliser des ellipses (…). De même, dans les macros, nous pouvons également utiliser des paramètres de longueur variable. Ici aussi, nous devons inclure les ellipses. '__VA_ARGS__' est utilisé pour gérer les arguments de longueur variable. L'opérateur de concaténation '##' est utilisé pour concaténer des paramètres variadiques. Dans cet exemple, la macro accepte des arguments de longueur variable, tout comme les fonctions printf() ou scanf(). Dans cette macro, nous imprimerons le nom du fichier, le numéro de ligne et le message d'erreur. Le premier paramètre est pr. Il est utilisé pour confirmer

En langage C, macro santé En langage C, macro santé Sep 03, 2023 pm 06:09 PM

Ici, nous verrons les macros d'hygiène en C. Nous connaissons l'utilisation des macros en C. Mais parfois, il ne renvoie pas le résultat attendu en raison d'une capture inattendue de l'identifiant. Si nous voyons le code ci-dessous, nous pouvons voir qu'il ne fonctionne pas. Exemple#include<stdio.h>#defineINCREMENT(i)do{inta=0;++i;}while(0)main(void){ inta=10,b=20; //Callthemacrostwotimesforaandb &a

En langage C, qu'est-ce qu'une fonction en ligne ? En langage C, qu'est-ce qu'une fonction en ligne ? Sep 08, 2023 am 11:21 AM

Les fonctions en ligne peuvent être remplacées là où l'appel de fonction se produit. La substitution de fonction est toujours le choix du compilateur. Dans une fonction en ligne, l'appel de fonction est remplacé par le code du programme réel. La plupart des fonctions en ligne sont utilisées pour de petits calculs. Ils ne conviennent pas aux gros calculs. Les fonctions en ligne sont similaires aux fonctions ordinaires. La seule différence est que nous mettons un mot-clé en ligne avant le nom de la fonction. Les fonctions en ligne sont créées à l'aide de la syntaxe suivante -inlinefunction_name(){ //functiondefinition}ExempleCe qui suit est une fonction en ligne pour un programme C : #include<stdio.h>inlineint

Robin Li a de nouveau évoqué le « trafic intense », affirmant que l'IA créerait davantage d'opportunités pour les êtres humains. Robin Li a de nouveau évoqué le « trafic intense », affirmant que l'IA créerait davantage d'opportunités pour les êtres humains. May 25, 2023 pm 10:05 PM

Il y a deux mois, le tableau "Voiture, Eau, Cheval, Dragon" créé par Baidu Wenxinyiyan lors de son test par le premier groupe d'utilisateurs est devenu populaire sur Internet du jour au lendemain "Voiture", "Eau", "Cheval", L'image. de "Dragon", quatre choses sans rapport empilées ensemble, est en effet un peu innocent. Puis, presque du jour au lendemain, Wen Xinyiyan a terminé l'itération et a réussi à interpréter le profond idiome chinois « trafic et trafic » avec des images. Deux mois plus tard, le 18 mai, lorsque Robin Li, fondateur, président et PDG de Baidu, a expliqué au public ce qu'était « l'IA générative », il a une fois de plus mentionné le « trafic intense », et ce qui est ressorti de la blague était quelque chose de plus. . Beaucoup de confiance et de calme. Oui, au cours des deux derniers mois, les « résultats » académiques de Wen Xinyiyan ont augmenté de manière presque linéaire. "Baïduwen

Des tableaux en C/C++ ? Des tableaux en C/C++ ? Sep 20, 2023 pm 08:25 PM

Un tableau est une collection séquentielle d’éléments du même type. Les tableaux sont utilisés pour stocker des collections de données, mais il est souvent plus utile de considérer les tableaux comme des collections de variables du même type. Au lieu de déclarer une seule variable telle que numéro0, numéro1, ... et numéro99, vous pouvez déclarer une variable tableau (par exemple nombre) et la représenter en utilisant des nombres[0], des nombres[1] et ..., des nombres[99] chaque variable. Des éléments spécifiques du tableau sont accessibles via l'indexation. Tous les tableaux sont constitués d'emplacements de mémoire contigus. L'adresse la plus basse correspond au premier élément et l'adresse la plus élevée correspond au dernier élément. Déclarer un tableauDéclarer un tableau nécessite de spécifier le type d'éléments et le nombre d'éléments requis. Un tableau est le suivant -ty

numéros de tempête numéros de tempête Aug 26, 2023 am 09:41 AM

Pour que N soit un nombre de tempête, le facteur premier le plus élevé de l'expression N ^ 2 + 1 doit être supérieur à ou égal à 2 * N et doit être un entier positif. Par exemple, 4 est un nombre de tempête. Puisque 4 * 4 + 1 = 17 a lui-même le plus grand facteur premier 17 qui est supérieur à 8, c'est-à-dire 2 * 4. Mais 3 n'est pas un nombre fort car 3 * 3 + 1 = 10.

See all articles