Heim Backend-Entwicklung C++ Stapel und Warteschlange in C++

Stapel und Warteschlange in C++

Aug 22, 2023 am 11:00 AM
栈 (stack) 队列 (queue) 数据结构 (data structure)

Stapel und Warteschlange in C++

Einführung in Stapel und Warteschlangen in C++

Stacks und Warteschlangen sind häufig verwendete Datenstrukturen in C++ und werden häufig in Programmen verwendet. In diesem Artikel werden die Konzepte, Verwendungs- und Anwendungsszenarien von Stapeln und Warteschlangen ausführlich vorgestellt.

1. Das Konzept von Stack

Stack (Stack) ist eine lineare Datenstruktur mit den Merkmalen „First in, last out“. Im Stapel befinden sich die in den Stapel verschobenen Daten näher am unteren Ende des Stapels; die später in den Stapel verschobenen Daten befinden sich näher am oberen Ende des Stapels.

Die Hauptoperationen des Stapels sind Push und Pop. Beim Pushen werden Daten zum Stapel hinzugefügt, beim Poppen werden Daten aus dem Stapel gelöscht. Der Stapel verfügt außerdem über zwei wichtige Spezialoperationen: Anzeigen des obersten Elements des Stapels (oben) und Bestimmen, ob der Stapel leer ist (leer).

Die Anwendungsszenarien des Stapels sind sehr breit, beispielsweise ist die Verwendung des Stapels an Funktionsaufrufen beteiligt. Wenn eine Funktion aufgerufen wird, werden ihre Parameter, lokalen Variablen und andere Informationen auf den Stapel gelegt. Wenn die Funktionsausführung endet, werden diese Informationen vom Stapel entfernt und in den Zustand vor dem Funktionsaufruf zurückversetzt.

2. Das Konzept der Warteschlange

Queue (Warteschlange) ist ebenfalls eine lineare Datenstruktur mit den Merkmalen „First In, First Out“. In der Warteschlange befinden sich die Daten, die früher in die Warteschlange gestellt werden, näher am Anfang der Warteschlange; die Daten, die später in die Warteschlange gestellt werden, befinden sich näher am Ende der Warteschlange.

Die Hauptoperationen der Warteschlange sind das Einreihen und Entfernen aus der Warteschlange. Das Betreten der Warteschlange bedeutet das Hinzufügen von Daten am Ende der Warteschlange, während das Entfernen aus der Warteschlange das Löschen von Daten am Anfang der Warteschlange bedeutet. Die Warteschlange verfügt außerdem über zwei wichtige Sonderoperationen: Anzeigen des Kopfelements (vorne) und Bestimmen, ob die Warteschlange leer ist (leer).

Warteschlangen werden beispielsweise auch häufig bei der Prozessplanung im Betriebssystem verwendet, um auf die Ausführung wartende Prozesse zu speichern. Wenn Systemressourcen frei sind, wird ein Prozess vom Anfang der Warteschlange genommen und ausgeführt, bis alle Aufgaben abgeschlossen sind.

3. Anwendungsbeispiele für Stapel und Warteschlangen

  1. Klammer-Matching

Bei der Programmierung ist es oft notwendig, festzustellen, ob die Klammern in einer Zeichenfolge übereinstimmen. Wenn Sie beispielsweise beim Schreiben eines Python-Programms überprüfen müssen, ob der Codeblock korrekt eingerückt ist, können Sie dies mithilfe des Stapels erreichen.

Die spezifische Implementierungsmethode besteht darin, jedes Zeichen in der Zeichenfolge zu durchlaufen und es auf den Stapel zu verschieben, wenn eine linke Klammer auftritt. Wenn eine rechte Klammer angetroffen wird, wird das oberste Element des Stapels zum Abgleich entfernt. Wenn die Übereinstimmung erfolgreich ist, fahren Sie mit der Durchquerung fort; andernfalls wird eine Fehlermeldung zurückgegeben.

  1. Prozessplanung

Im Betriebssystem ist es notwendig, eine einheitliche Planung und Koordination von Prozessen zu erreichen. Zu diesem Zeitpunkt kann eine Warteschlange zum Speichern von Prozessen verwendet werden, die auf ihre Ausführung warten, und das Betriebssystem bestimmt die Priorität und Ausführungsreihenfolge.

Die spezifische Implementierungsmethode besteht darin, jeden Prozess in eine Datenstruktur zu abstrahieren, einschließlich Prozessnummer, Priorität und anderen Informationen. Stellen Sie diese Prozesse in eine Warteschlange und führen Sie dann die Prozesse in der Warteschlange nacheinander aus. Wenn ein Prozess seine Aufgabe abschließt, wird er aus der Warteschlange entfernt, bis die Warteschlange leer ist.

4. Implementierung von Stacks und Warteschlangen in C++

In C++ können Sie die von der Standardbibliothek bereitgestellten Containerklassen verwenden, um Stacks und Warteschlangen zu implementieren.

  1. Implementierung des Stacks

Der Stack kann mit der Containerklasse std::stack implementiert werden.

std::stack ist eine Vorlagenklasse, die die Angabe des Elementtyps und des zugrunde liegenden Containertyps erfordert. Wenn der zugrunde liegende Containertyp nicht angegeben ist, wird standardmäßig std::deque als zugrunde liegender Container verwendet.

Das Folgende ist ein Beispiel für eine einfache Stack-Implementierung:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;

    s.push(1);
    s.push(2);
    s.push(3);

    std::cout << s.top() << std::endl; // 输出3

    s.pop();

    std::cout << s.top() << std::endl; // 输出2

    while (!s.empty()) {
        s.pop();
    }

    return 0;
}
Nach dem Login kopieren
  1. Queue-Implementierung

Queue kann mithilfe der Containerklasse std::queue implementiert werden.

std::queue ist ebenfalls eine Vorlagenklasse und muss den Elementtyp und den zugrunde liegenden Containertyp angeben. Wenn der zugrunde liegende Containertyp nicht angegeben ist, wird standardmäßig std::deque als zugrunde liegender Container verwendet.

Das Folgende ist ein einfaches Beispiel für die Implementierung einer Warteschlange:

#include <iostream>
#include <queue>

int main() {
    std::queue<int> q;

    q.push(1);
    q.push(2);
    q.push(3);

    std::cout << q.front() << std::endl; // 输出1

    q.pop();

    std::cout << q.front() << std::endl; // 输出2

    while (!q.empty()) {
        q.pop();
    }

    return 0;
}
Nach dem Login kopieren

Zusammenfassung

Wie aus der obigen Einführung ersichtlich ist, sind Stapel und Warteschlangen sehr praktische Datenstrukturen, die uns bei der Lösung vieler praktischer Probleme helfen können. Bei der Programmierung kann die Beherrschung der Nutzungs- und Implementierungsprinzipien dieser beiden Datenstrukturen die Effizienz und Zuverlässigkeit des Programms verbessern.

Das obige ist der detaillierte Inhalt vonStapel und Warteschlange in 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)

Hinweise zur Laravel-Entwicklung: Richtige Verwendung von Cache und Warteschlange Hinweise zur Laravel-Entwicklung: Richtige Verwendung von Cache und Warteschlange Nov 22, 2023 am 11:46 AM

Laravel ist ein sehr beliebtes PHP-Entwicklungsframework. Es bietet umfangreiche Funktionen und praktische Entwicklungsmethoden, die Entwicklern helfen können, schnell stabile und zuverlässige Webanwendungen zu erstellen. Während des Entwicklungsprozesses von Laravel ist es sehr wichtig, Cache und Warteschlange richtig zu verwenden. In diesem Artikel werden einige Vorsichtsmaßnahmen vorgestellt, die Entwicklern helfen sollen, Cache und Warteschlange besser zu nutzen. 1. Angemessene Verwendung des Caches Die Definition und Funktion des Caches Cache ist eine Technologie, die häufig verwendete Daten vorübergehend im Speicher speichert, was die Reaktionsgeschwindigkeit des Systems erheblich verbessern kann.

Anwendungsszenarien der Dead-Letter-Queue und der Delay-Queue in PHP und MySQL Anwendungsszenarien der Dead-Letter-Queue und der Delay-Queue in PHP und MySQL Oct 15, 2023 am 11:46 AM

Anwendungsszenarien von Dead Letter Queues und Delay Queues in PHP und MySQL Einführung Da Internetanwendungen immer komplexer werden, wächst von Tag zu Tag die Notwendigkeit, eine große Anzahl von Nachrichten und Aufgaben zu verarbeiten. Als Lösung können Warteschlangen die asynchrone Verarbeitung von Aufgaben effektiv implementieren und die Skalierbarkeit und Stabilität des Systems verbessern. In Warteschlangenanwendungen gibt es zwei gängige Konzepte: Warteschlangen für unzustellbare Nachrichten und Verzögerungswarteschlangen. In diesem Artikel werden die Anwendungsszenarien dieser beiden Konzepte in PHP und MySQL vorgestellt und spezifische Codebeispiele bereitgestellt. Die Anwendungsszenarien der Dead-Letter-Queue sind:

Implementierung von BFS mithilfe von Vektoren und Warteschlangen im Anschluss an die Implementierung des CLRS-Algorithmus in einem C-Programm Implementierung von BFS mithilfe von Vektoren und Warteschlangen im Anschluss an die Implementierung des CLRS-Algorithmus in einem C-Programm Sep 06, 2023 pm 04:37 PM

Im CLRS-Buch wird der BFS-Algorithmus mithilfe von Vektoren und Warteschlangen beschrieben. Wir müssen C++STL verwenden, um diesen Algorithmus zu implementieren. Schauen wir uns zunächst den Algorithmus an. Algorithmus BFS(G,s)−begin foreachvertexuinG.V-{s},do u.color:=white u.d:=infinity u.p:=NI

So implementieren Sie die Filterung und Weiterleitung von Warteschlangennachrichten in PHP und MySQL So implementieren Sie die Filterung und Weiterleitung von Warteschlangennachrichten in PHP und MySQL Oct 15, 2023 pm 04:55 PM

Queue-Implementierung der Nachrichtenfilterung und Nachrichtenweiterleitung in PHP und MySQL Mit der rasanten Entwicklung des Internets spielt die Nachrichtenwarteschlange (MessageQueue) als wichtiger Kommunikationsmechanismus eine entscheidende Rolle in der Webentwicklung. Nachrichtenwarteschlangen können verwendet werden, um Funktionen wie Entkopplung, Peak Shaving und asynchrone Verarbeitung zu implementieren. In diesem Artikel wird die Implementierung von Nachrichtenfilterung und Nachrichtenweiterleitung in PHP und MySQL vorgestellt und spezifische Codebeispiele bereitgestellt. Nachrichtenwarteschlange Die Nachrichtenwarteschlange ist ein typisches „Produzenten-Konsumenten“-Modell

Stapel und Warteschlange in C++ Stapel und Warteschlange in C++ Aug 22, 2023 am 11:00 AM

Einführung in Stapel und Warteschlangen in C++ Stapel und Warteschlangen sind häufig verwendete Datenstrukturen in C++ und werden häufig in Programmen verwendet. In diesem Artikel werden die Konzepte, Verwendungs- und Anwendungsszenarien von Stapeln und Warteschlangen ausführlich vorgestellt. 1. Das Konzept des Stapels Stapel (Stack) ist eine lineare Datenstruktur mit den Merkmalen „First In, Last Out“. Im Stapel befinden sich die in den Stapel verschobenen Daten näher am unteren Ende des Stapels; die später in den Stapel verschobenen Daten befinden sich näher am oberen Ende des Stapels. Die Hauptoperationen des Stapels sind Push und Pop. Den Stapel zu verschieben bedeutet, Daten zum Stapel hinzuzufügen und den Stapel zu öffnen

Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika? Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika? Sep 05, 2023 pm 09:25 PM

Java implementiert den Stack durch die Verwendung von Arrays und Generika. Dadurch entsteht eine vielseitige und wiederverwendbare Datenstruktur, die nach dem Last-In-First-Out-Prinzip (LIFO) arbeitet. Nach diesem Prinzip werden Elemente von oben hinzugefügt und entfernt. Durch die Verwendung von Arrays als Basis werden eine effiziente Speicherzuweisung und ein effizienter Speicherzugriff gewährleistet. Darüber hinaus ist der Stapel durch die Integration von Generika in der Lage, Elemente unterschiedlicher Art aufzunehmen, wodurch seine Vielseitigkeit erhöht wird. Die Implementierung umfasst die Definition einer Stack-Klasse, die generische Typparameter enthält. Es umfasst grundlegende Methoden wie push(), pop(), peek() und isEmpty(). Auch die Handhabung von Grenzfällen wie Stapelüberläufen und -unterläufen ist für die Gewährleistung einer reibungslosen Funktionalität von entscheidender Bedeutung. Diese Implementierung ermöglicht es Entwicklern, Programme zu erstellen, die diesen Anforderungen gerecht werden

Anwendungsszenarien für die Persistenz von Warteschlangennachrichten und die Deduplizierung von Nachrichten in PHP und MySQL Anwendungsszenarien für die Persistenz von Warteschlangennachrichten und die Deduplizierung von Nachrichten in PHP und MySQL Oct 15, 2023 pm 01:42 PM

Anwendungsszenarien für die Persistenz von Warteschlangennachrichten und die Deduplizierung von Nachrichten in PHP und MySQL. Warteschlangen sind eine gemeinsame Datenstruktur und werden häufig in der asynchronen Nachrichtenverarbeitung, Aufgabenplanung, Protokollerfassung und anderen Szenarien in der Softwareentwicklung verwendet. Unter diesen sind Nachrichtenpersistenz und Nachrichtendeduplizierung zwei wichtige Merkmale der Warteschlange, die die Nachrichtenzuverlässigkeit und Datenkonsistenz gewährleisten können. In PHP und MySQL können Warteschlangenanwendungen Redis als Nachrichten-Middleware und MySQL zum Speichern und Verwalten der Metadaten der Warteschlange verwenden. Konkrete Beispiele sind wie folgt. Erste

Wie können wir einen Stack mithilfe einer Warteschlange in Java implementieren? Wie können wir einen Stack mithilfe einer Warteschlange in Java implementieren? Aug 25, 2023 pm 05:05 PM

Ein Stapel ist eine Unterklasse der Vector-Klasse und stellt einen LIFO-Stapel (Last-In-First-Out) von Objekten dar. Das letzte Element, das oben zum Stapel hinzugefügt wird (In), kann das erste Element sein, das aus dem Stapel entfernt wird (Out). Die Queue-Klasse erweitert die Collection-Schnittstelle und unterstützt Einfüge- und Löschvorgänge mithilfe von First-In-First-Out (FIFO). Wir können Warteschlangen auch verwenden, um Stapel im folgenden Programm zu implementieren. Beispiel importjava.util.*;publicclassStackFromQueueTest{ Queuequeue=newLinkedList();

See all articles