Einführung
In diesem Lab werden wir lernen, wie man eine Min Heap mit einer Prioritätswarteschlange in C++ implementiert. Wir werden ein C++-Programm implementieren, das grundlegende Operationen auf einer Min Heap ausführen kann.
💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken
In diesem Lab werden wir lernen, wie man eine Min Heap mit einer Prioritätswarteschlange in C++ implementiert. Wir werden ein C++-Programm implementieren, das grundlegende Operationen auf einer Min Heap ausführen kann.
Erstellen Sie ein neues C++-Programm im Verzeichnis ~/project
, indem Sie die folgenden Befehle in der Konsole ausführen:
cd ~/project
touch main.cpp
Wir beginnen, indem wir die erforderlichen Headerdateien in unserem Programm einfügen:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
show()
-FunktionAls nächstes definieren wir eine Funktion, die die Elemente der Min Heap ausgibt. Diese Funktion nimmt eine Prioritätswarteschlange als Argument entgegen und verwendet eine Kopie der Prioritätswarteschlange, um die ursprüngliche Prioritätswarteschlange zu erhalten.
// Funktion zum Ausgeben der Elemente der Min Heap
void show(priority_queue<int, vector<int>, greater<int>> q)
{
// Kopieren der Prioritätswarteschlange in eine andere, um die ursprüngliche Prioritätswarteschlange zu erhalten
priority_queue<int, vector<int>, greater<int>> mh = q;
while (!mh.empty())
{
cout << "\t" << mh.top(); // Ausgabe des obersten Elements
mh.pop(); // Löschen des obersten Elements, um zum nächsten zu gelangen
}
cout << endl;
}
main()
-FunktionIn der main()
-Funktion werden wir eine Prioritätswarteschlange von ganzen Zahlen erstellen und sie mit Elementen füllen.
int main()
{
// Erstellen einer Prioritätswarteschlange von ganzen Zahlen
priority_queue<int, vector<int>, greater<int>> minHeap;
// Füllen der Prioritätswarteschlange mit Elementen
for (int i = 1; i < 6; i++)
{
minHeap.push(i * 20);
}
// Ausgeben der Anzahl der Elemente in der Min Heap
cout << "Die Anzahl der Elemente in der Min Heap beträgt: " << minHeap.size() << endl;
// Ausgeben des ersten Elements oder des Elements mit der höchsten Priorität
cout << "Das erste Element oder das Element mit der höchsten Priorität ist: " << minHeap.top() << endl;
// Ausgeben der Elemente der Min Heap
cout << "Die Elemente der Min Heap sind: ";
show(minHeap);
// Löschen des ersten oder des kleinsten Elements aus der Min Heap
minHeap.pop();
// Ausgeben der Min Heap nach dem Löschen des kleinsten Elements
cout << "Nachdem das erste oder das kleinste Element aus der Min Heap gelöscht wurde, wird es zu: ";
show(minHeap);
// Ausgeben der Anzahl der Elemente in der Min Heap nach dem Löschen des kleinsten Elements
cout << "Die Anzahl der Elemente in der Min Heap nach dem Löschen des kleinsten Elements beträgt: " << minHeap.size() << endl;
return 0;
}
Um das Programm zu kompilieren, führen Sie im Terminal folgenden Befehl aus:
g++ main.cpp -o main
Dieser Befehl kompiliert den Quellcode main.cpp
und erstellt eine ausführbare Datei namens main
.
Um das Programm auszuführen, führen Sie folgenden Befehl aus:
./main
main.cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
// Funktion zum Ausgeben der Elemente der Min Heap
void show(priority_queue<int, vector<int>, greater<int>> q)
{
// Kopieren der Prioritätswarteschlange in eine andere, um die ursprüngliche Prioritätswarteschlange zu erhalten
priority_queue<int, vector<int>, greater<int>> mh = q;
while (!mh.empty())
{
cout << "\t" << mh.top(); // Ausgabe des obersten Elements
mh.pop(); // Löschen des obersten Elements, um zum nächsten zu gelangen
}
cout << endl;
}
int main()
{
// Erstellen einer Prioritätswarteschlange von ganzen Zahlen
priority_queue<int, vector<int>, greater<int>> minHeap;
// Füllen der Prioritätswarteschlange mit Elementen
for (int i = 1; i < 6; i++)
{
minHeap.push(i * 20);
}
// Ausgeben der Anzahl der Elemente in der Min Heap
cout << "Die Anzahl der Elemente in der Min Heap beträgt: " << minHeap.size() << endl;
// Ausgeben des ersten Elements oder des Elements mit der höchsten Priorität
cout << "Das erste Element oder das Element mit der höchsten Priorität ist: " << minHeap.top() << endl;
// Ausgeben der Elemente der Min Heap
cout << "Die Elemente der Min Heap sind: ";
show(minHeap);
// Löschen des ersten oder des kleinsten Elements aus der Min Heap
minHeap.pop();
// Ausgeben der Min Heap nach dem Löschen des kleinsten Elements
cout << "Nachdem das erste oder das kleinste Element aus der Min Heap gelöscht wurde, wird es zu: ";
show(minHeap);
// Ausgeben der Anzahl der Elemente in der Min Heap nach dem Löschen des kleinsten Elements
cout << "Die Anzahl der Elemente in der Min Heap nach dem Löschen des kleinsten Elements beträgt: " << minHeap.size() << endl;
return 0;
}
In diesem Lab haben wir gelernt, wie man eine Min Heap mit einer Prioritätswarteschlange in C++ implementiert. Wir haben eine Funktion definiert, um die Elemente der Min Heap auszugeben, eine Prioritätswarteschlange von ganzen Zahlen erstellt, sie mit Elementen gefüllt und die Anzahl der Elemente in der Min Heap, das erste Element oder das Element mit der höchsten Priorität, die Elemente der Min Heap, die Min Heap nach dem Löschen des kleinsten Elements und die Anzahl der Elemente in der Min Heap nach dem Löschen des kleinsten Elements ausgegeben.