Maison développement back-end C++ Pile et file d'attente en C++

Pile et file d'attente en C++

Aug 22, 2023 am 11:00 AM
empiler file d'attente structure des données

Pile et file dattente en C++

Introduction aux piles et aux files d'attente en C++

Les piles et les files d'attente sont des structures de données couramment utilisées en C++, et elles sont largement utilisées dans les programmes. Cet article présentera en détail les concepts, les scénarios d'utilisation et d'application des piles et des files d'attente.

1. Le concept de stack

Stack (Stack) est une structure de données linéaire, qui présente les caractéristiques du « premier entré, dernier sorti ». Dans la pile, les données poussées dans la pile sont plus proches du bas de la pile ; les données poussées plus tard dans la pile sont plus proches du haut de la pile.

Les principales opérations de la pile sont le push et le pop. Pousser consiste à ajouter des données à la pile, et popper consiste à supprimer des données de la pile. La pile comporte également deux opérations spéciales importantes : visualiser l'élément supérieur de la pile (top) et déterminer si la pile est vide (vide).

Les scénarios d'application de la pile sont très larges, par exemple, l'utilisation de la pile est impliquée dans les appels de fonction. Lorsqu'une fonction est appelée, ses paramètres, variables locales et autres informations seront poussés sur la pile. Lorsque l'exécution de la fonction se termine, ces informations seront extraites de la pile et restaurées à l'état avant l'appel de la fonction.

2. Le concept de file d'attente

Queue (Queue) est également une structure de données linéaire, qui présente les caractéristiques du « premier entré, premier sorti ». Dans la file d'attente, les données mises en file d'attente plus tôt sont plus proches de la tête de la file d'attente ; les données mises en file d'attente plus tard sont plus proches de la fin de la file d'attente.

Les principales opérations de la file d'attente sont la mise en file d'attente et la sortie de la file d'attente. Entrer dans la file d'attente signifie ajouter des données à la fin de la file d'attente, tandis que sortir de la file d'attente signifie supprimer les données de la tête de la file d'attente. La file d'attente comporte également deux opérations spéciales importantes : visualiser l'élément de tête (avant) et déterminer si la file d'attente est vide (vide).

Les files d'attente sont également largement utilisées. Par exemple, dans la planification des processus dans le système d'exploitation, les files d'attente peuvent être utilisées pour enregistrer les processus en attente d'exécution. Lorsque les ressources système sont libres, un processus est retiré de la tête de la file d'attente et exécuté jusqu'à ce que toutes les tâches soient terminées.

3. Exemples d'application de piles et de files d'attente

  1. Correspondance de supports

En programmation, il est souvent nécessaire de déterminer si les parenthèses d'une chaîne correspondent. Par exemple, lors de l'écriture d'un programme Python, si vous devez vérifier si le bloc de code est correctement indenté, vous pouvez utiliser la pile pour y parvenir.

La méthode d'implémentation spécifique consiste à parcourir chaque caractère de la chaîne et à le pousser sur la pile lorsque vous rencontrez un crochet gauche. Lorsqu'une parenthèse droite est rencontrée, l'élément supérieur de la pile est sauté pour la correspondance. Si la correspondance réussit, continuez la traversée ; sinon, un message d’erreur est renvoyé.

  1. Planification des processus

Dans le système d'exploitation, il est nécessaire de parvenir à une planification et une coordination unifiées des processus. À ce stade, vous pouvez utiliser une file d'attente pour stocker les processus en attente d'exécution, et le système d'exploitation détermine la priorité et l'ordre d'exécution.

La méthode de mise en œuvre spécifique consiste à résumer chaque processus dans une structure de données, comprenant le numéro de processus, la priorité et d'autres informations. Mettez ces processus dans une file d'attente, puis exécutez les processus dans la file d'attente dans l'ordre. Lorsqu'un processus termine sa tâche, il est retiré de la file d'attente jusqu'à ce que la file d'attente soit vide.

4. Implémentation de piles et de files d'attente en C++

En C++, vous pouvez utiliser les classes conteneur fournies par la bibliothèque standard pour implémenter des piles et des files d'attente.

  1. Implémentation de la pile

La pile peut être implémentée à l'aide de la classe conteneur std::stack.

std::stack est une classe de modèle qui nécessite de spécifier le type d'élément et le type de conteneur sous-jacent. Lorsque le type de conteneur sous-jacent n'est pas spécifié, std::deque est utilisé par défaut comme conteneur sous-jacent.

Ce qui suit est un exemple d'implémentation de pile simple :

#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;
}
Copier après la connexion
  1. Implémentation de la file d'attente

La file d'attente peut être implémentée à l'aide de la classe conteneur std::queue.

std::queue est également une classe de modèle et doit spécifier le type d'élément et le type de conteneur sous-jacent. Lorsque le type de conteneur sous-jacent n'est pas spécifié, std::deque est utilisé par défaut comme conteneur sous-jacent.

Ce qui suit est un exemple simple d'implémentation de file d'attente :

#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;
}
Copier après la connexion

Résumé

Comme le montre l'introduction ci-dessus, les piles et les files d'attente sont des structures de données très pratiques qui peuvent nous aider à résoudre de nombreux problèmes pratiques. En programmation, maîtriser les principes d'utilisation et de mise en œuvre de ces deux structures de données peut améliorer l'efficacité et la fiabilité du programme.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Notes de développement de Laravel : utilisation appropriée du cache et de la file d'attente Notes de développement de Laravel : utilisation appropriée du cache et de la file d'attente Nov 22, 2023 am 11:46 AM

Laravel est un framework de développement PHP très populaire. Il fournit des fonctions riches et des méthodes de développement pratiques, qui peuvent aider les développeurs à créer rapidement des applications Web stables et fiables. Pendant le processus de développement de Laravel, il est très important d'utiliser correctement le cache et la file d'attente. Cet article présentera quelques précautions pour aider les développeurs à mieux utiliser le cache et la file d'attente. 1. Utilisation raisonnable du cache La définition et la fonction du cache Le cache est une technologie qui stocke temporairement les données fréquemment utilisées en mémoire, ce qui peut considérablement améliorer la vitesse de réponse du système.

Scénarios d'application de file d'attente de lettres mortes et de file d'attente de retard en PHP et MySQL Scénarios d'application de file d'attente de lettres mortes et de file d'attente de retard en PHP et MySQL Oct 15, 2023 am 11:46 AM

Scénarios d'application des files d'attente de lettres mortes et des files d'attente à retard dans PHP et MySQL Introduction À mesure que les applications Internet deviennent de plus en plus complexes, la nécessité de traiter un grand nombre de messages et de tâches augmente de jour en jour. En tant que solution, les files d'attente peuvent mettre en œuvre efficacement le traitement asynchrone des tâches et améliorer l'évolutivité et la stabilité du système. Dans les applications de file d'attente, deux concepts courants sont les files d'attente de lettres mortes et les files d'attente à retard. Cet article présentera les scénarios d'application de ces deux concepts en PHP et MySQL, et fournira des exemples de code spécifiques. Les scénarios d'application de la file d'attente de lettres mortes sont :

Implémentation de BFS à l'aide de vecteurs et de files d'attente, suite à l'implémentation de l'algorithme CLRS dans un programme C Implémentation de BFS à l'aide de vecteurs et de files d'attente, suite à l'implémentation de l'algorithme CLRS dans un programme C Sep 06, 2023 pm 04:37 PM

Dans le livre CLRS, l'algorithme BFS est décrit à l'aide de vecteurs et de files d'attente. Nous devons utiliser C++STL pour implémenter cet algorithme. Regardons d'abord l'algorithme. Algorithme BFS(G,s)−begin foreachvertexuinG.V-{s},do u.color:=white u.d:=infinity u.p:=NI

Comment implémenter le filtrage des messages de file d'attente et le routage des messages dans PHP et MySQL Comment implémenter le filtrage des messages de file d'attente et le routage des messages dans PHP et MySQL Oct 15, 2023 pm 04:55 PM

Implémentation par Queue du filtrage et du routage des messages dans PHP et MySQL Avec le développement rapide d'Internet, la file d'attente de messages (MessageQueue), en tant que mécanisme de communication important, joue un rôle essentiel dans le développement Web. Les files d'attente de messages peuvent être utilisées pour implémenter des fonctions telles que le découplage, l'écrêtement des pics et le traitement asynchrone. Cet article présentera comment implémenter le filtrage et le routage des messages dans PHP et MySQL, et fournira des exemples de code spécifiques. File d'attente des messages La file d'attente des messages est un modèle typique « producteur-consommateur »

Comment implémenter la pile en Java à l'aide de tableaux et de génériques ? Comment implémenter la pile en Java à l'aide de tableaux et de génériques ? Sep 05, 2023 pm 09:25 PM

Java implémente la pile en utilisant des tableaux et des génériques. Cela crée une structure de données polyvalente et réutilisable qui fonctionne selon le principe du dernier entré, premier sorti (LIFO). Suivant ce principe, des éléments sont ajoutés et supprimés par le haut. En utilisant des tableaux comme base, il garantit une allocation et un accès efficaces à la mémoire. De plus, en incorporant des génériques, la pile est capable d'accueillir des éléments de différents types, améliorant ainsi sa polyvalence. L'implémentation implique la définition d'une classe Stack contenant des paramètres de type génériques. Il comprend des méthodes de base telles que push(), pop(), peek() et isEmpty(). La gestion des cas extrêmes, tels que les débordements et les sous-débordements de pile, est également essentielle pour garantir une fonctionnalité transparente. Cette implémentation permet aux développeurs de créer des programmes qui s'adaptent

Pile et file d'attente en C++ Pile et file d'attente en C++ Aug 22, 2023 am 11:00 AM

Introduction aux piles et aux files d'attente en C++ Les piles et les files d'attente sont des structures de données couramment utilisées en C++ et sont largement utilisées dans les programmes. Cet article présentera en détail les concepts, les scénarios d'utilisation et d'application des piles et des files d'attente. 1. Le concept de pile Stack (Stack) est une structure de données linéaire qui présente les caractéristiques du « premier entré, dernier sorti ». Dans la pile, les données poussées dans la pile sont plus proches du bas de la pile ; les données poussées plus tard dans la pile sont plus proches du haut de la pile. Les principales opérations de la pile sont le push et le pop. Pousser la pile signifie ajouter des données à la pile et faire éclater la pile

Scénarios d'application de persistance des messages de file d'attente et de déduplication des messages en PHP et MySQL Scénarios d'application de persistance des messages de file d'attente et de déduplication des messages en PHP et MySQL Oct 15, 2023 pm 01:42 PM

Scénarios d'application de persistance des messages de file d'attente et de déduplication des messages dans PHP et MySQL La file d'attente est une structure de données courante et est largement utilisée dans le traitement des messages asynchrones, la planification des tâches, la collecte de journaux et d'autres scénarios de développement de logiciels. Parmi elles, la persistance des messages et la déduplication des messages sont deux fonctionnalités importantes de la file d'attente, qui peuvent garantir la fiabilité des messages et la cohérence des données. En PHP et MySQL, les applications de file d'attente peuvent utiliser Redis comme middleware de messages et MySQL pour stocker et gérer les métadonnées de la file d'attente. Des exemples spécifiques sont les suivants. d'abord

Comment pouvons-nous implémenter la pile en utilisant la file d'attente en Java ? Comment pouvons-nous implémenter la pile en utilisant la file d'attente en Java ? Aug 25, 2023 pm 05:05 PM

Une pile est une sous-classe de la classe Vector et représente une pile d'objets dernier entré, premier sorti (LIFO). Le dernier élément ajouté en haut de la pile (In) peut être le premier élément supprimé de la pile (Out). La classe Queue étend l'interface Collection et prend en charge les opérations d'insertion et de suppression à l'aide du premier entré, premier sorti (FIFO). Nous pouvons également utiliser des files d'attente pour implémenter des piles dans le programme suivant. Exemple importjava.util.*;publicclassStackFromQueueTest{ Queuequeue=newLinkedList();

See all articles