Introduction à la file d'attente prioritaire en C/C++
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.
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
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
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

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

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)

Sujets chauds











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

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.

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

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

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

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

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

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.
