Einführung in die Prioritätswarteschlange in C/C++
Eine Prioritätswarteschlange ist eine Warteschlange, in die Elemente basierend auf der ihnen zugewiesenen Priorität eingefügt oder entfernt werden, wobei Priorität ein ganzzahliger Wert im Bereich von 0 bis 10 ist, wobei 0 das Element mit der höchsten Priorität und 10 das Element mit darstellt Das Element mit der höchsten Priorität hat die niedrigste Priorität. Die Implementierung einer Prioritätswarteschlange folgt zwei Regeln:
- Die Daten oder Elemente mit der höchsten Priorität werden vor den Daten oder Elementen mit der niedrigsten Priorität ausgeführt.
- Wenn zwei Elemente die gleiche Priorität haben, werden sie in der Reihenfolge ausgeführt, in der sie zur Liste hinzugefügt wurden.
Es stehen verschiedene Datenstrukturen zur Verfügung, mit denen Prioritätswarteschlangen wie Stapel, Warteschlangen und verknüpfte Listen implementiert werden können. In diesem Artikel erklären wir die Datenstruktur der Warteschlange. Es gibt beispielsweise zwei Möglichkeiten, eine Prioritätswarteschlange zu implementieren:
-
Verwalten Sie Warteschlangen für mehrere Prioritäten in einem einzelnen Array.
Eine Möglichkeit, eine Prioritätswarteschlange zu implementieren, besteht darin, für jede Priorität eine Warteschlange zu verwalten. Wir können diese mehreren Warteschlangen in einem Array speichern, wobei jede Warteschlange zwei Zeiger hat, „Front“ und „Rear“. In der Warteschlange wird der vordere Zeiger zum Einfügen von Elementen in die Warteschlange verwendet und jedes Mal, wenn ein Element eingefügt wird, um 1 erhöht. Der andere Zeiger ist der hintere Zeiger, der zum Löschen oder Entfernen von Elementen aus der Warteschlange verwendet wird jedes Mal dekrementiert, wenn ein Element aus der Warteschlange entfernt wird. Schließlich können wir aus den Positionen der beiden Zeiger auch die Anzahl der Elemente in der Warteschlange bestimmen.
HINWEIS - Wenn jede Warteschlange die gleiche Größe hat, können wir statt mehrerer eindimensionaler Arrays ein zweidimensionales Array erstellen.
Algorithmus für den Einfügungsvorgang der Prioritätswarteschlange
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
Algorithmus des Einfügungsvorgangs in die Prioritätswarteschlange
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
Das obige ist der detaillierte Inhalt vonEinführung in die Prioritätswarteschlange in C/C++. 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



Im C90-Standard müssen wir das Array in einer festen Reihenfolge initialisieren, z. B. den Index an Position 0, 1, 2 usw. initialisieren. Beginnend mit dem C99-Standard führten sie eine bestimmte Initialisierungsfunktionalität in C ein. Hier können wir Elemente in zufälliger Reihenfolge initialisieren. Die Initialisierung kann mithilfe von Array-Indizes oder Strukturmitgliedern erfolgen. Diese Erweiterung ist in GNUC++ nicht implementiert. Wenn wir einige Indizes angeben und einige Werte eingeben, sieht es so aus: intarr[6]={[3]=20,[5]=40};orintarr[6]={[3]20,[5 ] 40};Dies entspricht: intarr[6]={0,0,0,20,0,40};Wir können auch einen Bereich von Elementen mithilfe der folgenden Syntax einfügen

Eine Prioritätswarteschlange ist eine Warteschlange, in die Elemente basierend auf der ihnen zugewiesenen Priorität eingefügt oder entfernt werden, wobei die Priorität ein ganzzahliger Wert im Bereich von 0 bis 10 ist, wobei 0 das Element mit der höchsten Priorität und 10 das Element mit der höchsten Priorität darstellt Element mit der höchsten Priorität Das Element mit der niedrigsten Priorität. Die Implementierung einer Prioritätswarteschlange folgt zwei Regeln: Daten oder Elemente mit der höchsten Priorität werden vor Daten oder Elementen mit der niedrigsten Priorität ausgeführt. Wenn zwei Elemente die gleiche Priorität haben, werden sie in der Reihenfolge ausgeführt, in der sie zur Liste hinzugefügt wurden. Es stehen verschiedene Datenstrukturen zur Verfügung, mit denen Prioritätswarteschlangen wie Stapel, Warteschlangen und verknüpfte Listen implementiert werden können. In diesem Artikel erklären wir die Datenstruktur der Warteschlange. Es gibt zwei Möglichkeiten, Prioritätswarteschlangen zu implementieren, z. B. mehrere in einem einzigen Array verwalten

Wir wissen, dass Funktionen mithilfe von Parametern variabler Länge in der C-Sprache definiert werden können. Dazu müssen wir Ellipsen (…) verwenden. Ebenso können wir in Makros auch Parameter variabler Länge verwenden. Auch hier müssen wir die Ellipsen einbeziehen. „__VA_ARGS__“ wird zur Verarbeitung von Argumenten variabler Länge verwendet. Der Verkettungsoperator „##“ wird zum Verketten verschiedener Parameter verwendet. In diesem Beispiel akzeptiert das Makro Argumente variabler Länge, genau wie die Funktionen printf() oder scanf(). In diesem Makro drucken wir den Dateinamen, die Zeilennummer und die Fehlermeldung. Der erste Parameter ist pr. Es dient der Bestätigung

Vor zwei Monaten wurde das von Baidu Wenxinyiyan erstellte Gemälde „Auto, Wasser, Pferd, Drache“, als es von der ersten Gruppe von Benutzern getestet wurde, über Nacht im Internet populär von „Dragon“, vier aufeinander gestapelten Dingen, die nichts miteinander zu tun haben, ist in der Tat ein wenig unschuldig. Dann, fast über Nacht, schloss Wen Xinyiyan die Iteration ab und interpretierte erfolgreich die tiefgründige chinesische Redewendung „Verkehr und Verkehr“ mit Bildern. Als Robin Li, Gründer, Vorsitzender und CEO von Baidu, zwei Monate später, am 18. Mai, dem Publikum erklärte, was „generative KI“ sei, erwähnte er noch einmal den „dichten Verkehr“, und aus dem Witz ging etwas mehr hervor . Viel Selbstvertrauen und Ruhe. Ja, in den letzten zwei Monaten sind Wen Xinyiyans akademische „Ergebnisse“ fast linear gestiegen. „Baiduwen

Hier sehen wir Hygienemakros in C. Wir kennen die Verwendung von Makros in C. Manchmal wird jedoch aufgrund einer unerwarteten Erfassung des Bezeichners nicht das erwartete Ergebnis zurückgegeben. Wenn wir den Code unten sehen, können wir sehen, dass er nicht funktioniert. Beispiel#include<stdio.h>#defineINCREMENT(i)do{inta=0;++i;}while(0)main(void){ inta=10,b=20; //Callthemacrostwotimesforaandb &a

Inline-Funktionen können dort ersetzt werden, wo der Funktionsaufruf erfolgt. Die Funktionsersetzung ist immer die Wahl des Compilers. Bei einer Inline-Funktion wird der Funktionsaufruf durch den eigentlichen Programmcode ersetzt. Die meisten Inline-Funktionen werden für kleine Berechnungen verwendet. Für große Berechnungen sind sie nicht geeignet. Inline-Funktionen ähneln gewöhnlichen Funktionen. Der einzige Unterschied besteht darin, dass wir vor dem Funktionsnamen ein Schlüsselwort inline einfügen. Inline-Funktionen werden mit der folgenden Syntax erstellt: -inlinefunction_name(){ //functiondefinition}BeispielDas Folgende ist eine Inline-Funktion für ein C-Programm: #include<stdio.h>inlineint

Ein Array ist eine sequentielle Sammlung von Elementen desselben Typs. Arrays werden zum Speichern von Datensammlungen verwendet. Häufig ist es jedoch sinnvoller, sich Arrays als Sammlungen von Variablen desselben Typs vorzustellen. Anstatt eine einzelne Variable wie Zahl0, Zahl1, ... und Zahl99 zu deklarieren, können Sie eine Array-Variable (z. B. Zahl) deklarieren und sie mit Zahlen[0], Zahlen[1] und ..., Zahlen[99] darstellen. jede Variable. Auf bestimmte Elemente im Array wird durch Indizierung zugegriffen. Alle Arrays bestehen aus zusammenhängenden Speicherorten. Die niedrigste Adresse entspricht dem ersten Element und die höchste Adresse entspricht dem letzten Element. Ein Array deklarieren Das Deklarieren eines Arrays erfordert die Angabe des Elementtyps und der Anzahl der erforderlichen Elemente. Ein Array sieht wie folgt aus: -ty

Damit N eine Stormer-Zahl ist, muss der höchste Primfaktor des Ausdrucks N^2+1 größer als oder gleich 2*N sein und sollte eine positive ganze Zahl sein. Beispielsweise ist 4 eine Stormer-Zahl. Da 4*4+1=17 selbst den größten Primfaktor 17 hat, der größer als 8 ist, also 2*10
