Inhaltsverzeichnis
Algorithmus für den Einfügungsvorgang der Prioritätswarteschlange
Algorithmus des Einfügungsvorgangs in die Prioritätswarteschlange
Heim Backend-Entwicklung C++ Einführung in die Prioritätswarteschlange in C/C++

Einführung in die Prioritätswarteschlange in C/C++

Sep 13, 2023 pm 05:21 PM
编程 (programming) c语言 (c language) Prioritätswarteschlange

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.

Einführung in die Prioritätswarteschlange in C/C++

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Designierter Initialisierer in der C-Sprache Designierter Initialisierer in der C-Sprache Sep 01, 2023 am 08:49 AM

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

Einführung in die Prioritätswarteschlange in C/C++ Einführung in die Prioritätswarteschlange in C/C++ Sep 13, 2023 pm 05:21 PM

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

In der C-Sprache Parameter variabler Länge von Makros In der C-Sprache Parameter variabler Länge von Makros Aug 27, 2023 pm 10:49 PM

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

Robin Li erwähnte erneut den „dichten Verkehr' und sagte, dass KI mehr Möglichkeiten für den Menschen schaffen werde Robin Li erwähnte erneut den „dichten Verkehr' und sagte, dass KI mehr Möglichkeiten für den Menschen schaffen werde May 25, 2023 pm 10:05 PM

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

In der C-Sprache Gesundheitsmakro In der C-Sprache Gesundheitsmakro Sep 03, 2023 pm 06:09 PM

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

Was ist in C-Sprache eine Inline-Funktion? Was ist in C-Sprache eine Inline-Funktion? Sep 08, 2023 am 11:21 AM

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

Arrays in C/C++? Arrays in C/C++? Sep 20, 2023 pm 08:25 PM

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

Sturmzahlen Sturmzahlen Aug 26, 2023 am 09:41 AM

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

See all articles