Pile C# avec exemples Push & Pop
⚡ Résumé intelligent
En C#, une pile est une collection de l'espace de noms System.Collections qui suit le principe du dernier entré, premier sorti (LIFO), où la méthode Push ajoute un élément au sommet et la méthode Pop le supprime.

Qu’est-ce que Stack en C# ?
La pile est une collection de cas particuliers qui représente un concept du dernier entré, premier sorti (LIFO). Pour d’abord comprendre LIFO, prenons un exemple. Imaginez une pile de livres, chaque livre étant superposé.
Le concept du dernier entré, premier sorti dans le cas des livres signifie que seul le livre le plus haut peut être retiré de la pile de livres. Il n'est pas possible de retirer un livre entre les deux, car cela perturberait le positionnement de la pile.
Donc dans C#, la pile fonctionne également de la même manière. Les éléments sont ajoutés à la pile, les uns sur les autres. Le processus d’ajout d’un élément à la pile est appelé opération push. Pour supprimer un élément d'une pile, vous pouvez également supprimer l'élément le plus haut de la pile. Cette opération est connue sous le nom de pop.
Examinons plus en détail les opérations disponibles pour la collection Stack.
Déclaration de la pile
Une pile est créée à l'aide du type Stack Data. Le mot clé « new » est utilisé pour créer un objet d’une Stack. L'objet est ensuite affecté à la variable st.
Stack st = new Stack()
Ajout d'éléments à la pile
La méthode push est utilisée pour ajouter un élément sur la pile. La syntaxe générale de l'instruction est donnée ci-dessous.
Stack.push(element)
Supprimer des éléments de la pile
La méthode pop est utilisée pour supprimer un élément de la pile. L'opération pop renverra l'élément le plus haut de la pile. La syntaxe générale de l'instruction est donnée ci-dessous
Stack.pop()
que vous avez
Cette propriété est utilisée pour obtenir le nombre d'éléments dans la pile. Vous trouverez ci-dessous la syntaxe générale de cette instruction.
Stack.Count
Inclus
Cette méthode est utilisée pour voir si un élément est présent dans la Stack. Vous trouverez ci-dessous la syntaxe générale de cette instruction. L'instruction renverra vrai si l'élément existe, sinon elle renverra la valeur faux.
Stack.Contains(element)
Voyons maintenant que cela fonctionne au niveau du code. Tout le code mentionné ci-dessous sera écrit dans notre Application console. Le code sera écrit dans notre fichier Program.cs.
Dans le programme ci-dessous, nous écrirons le code pour voir comment nous pouvons utiliser les méthodes mentionnées ci-dessus.
Exemple 1 : méthode Stack.Push()
Dans cet exemple, nous verrons
- Comment une pile est créée.
- Comment afficher les éléments de la pile, et utiliser les méthodes Count et Contain.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Stack st = new Stack(); st.Push(1); st.Push(2); st.Push(3); foreach (Object obj in st) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The number of elements in the stack " +st.Count); Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3)); Console.ReadKey(); } } }
Code Explication:-
- La première étape permet de déclarer la Stack. Ici, nous déclarons « st » comme variable pour contenir les éléments de notre pile.
- Ensuite, nous ajoutons 3 éléments à notre pile. Chaque élément est ajouté via la méthode Push.
- Maintenant, puisque les éléments de la pile ne sont pas accessibles via la position d'index comme le liste des tableaux, nous devons utiliser une approche différente pour afficher les éléments de la pile. L'objet (obj) est une variable temporaire, déclarée pour contenir chaque élément de la pile. Nous utilisons ensuite l'instruction foreach pour parcourir chaque élément de la pile. Pour chaque élément de pile, la valeur est attribuée à la variable obj. Nous utilisons ensuite la commande Console.Writeline pour afficher la valeur sur la console.
- Nous utilisons la propriété Count (st.count) pour obtenir le nombre d'éléments dans la pile. Cette propriété renverra un numéro. Nous affichons ensuite cette valeur à la console.
- Nous utilisons ensuite la méthode Contains pour voir si la valeur 3 est présente dans notre pile. Cela renverra une valeur vraie ou fausse. Nous affichons ensuite cette valeur de retour à la console.
Si le code ci-dessus est entré correctement et que le programme est exécuté, la sortie suivante sera affichée.
Sortie :
À partir du résultat, nous pouvons voir que les éléments de la pile sont affichés. De plus, la valeur True est affichée pour indiquer que la valeur 3 est définie sur la pile.
Note: Vous avez remarqué que le dernier élément poussé sur la pile est affiché en premier. Il s'agit de l'élément le plus haut de la pile. Le nombre d'éléments de pile est également affiché dans la sortie.
Exemple 2 : méthode Stack.Pop()
Examinons maintenant la fonctionnalité « supprimer ». Nous verrons le code requis pour supprimer l'élément le plus haut de la pile.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Stack st = new Stack(); st.Push(1); st.Push(2); st.Push(3); st.Pop(); foreach (Object obj in st) { Console.WriteLine(obj); } Console.ReadKey(); } } }
Code Explication:-
- Ici, nous émettons simplement la méthode pop qui est utilisée pour supprimer un élément de la pile.
Si le code ci-dessus est saisi correctement et que le programme est exécuté, la sortie suivante sera affichée.
Sortie :
On voit que l'élément 3 a été supprimé de la pile.
Méthode Stack Peek() de C#
Les méthodes Push et Pop agissent sur l'élément en haut de la pile, mais il arrive qu'on ait seulement besoin de consulter cet élément sans le supprimer. La méthode Peek fait exactement cela. Elle renvoie la valeur la plus haute de la pile tout en laissant la collection inchangée, ce qui est pratique pour tester l'élément suivant avant de le dépiler.
Étape 1) Créez une pile et empilez-y trois éléments, de sorte que la valeur 3 se trouve au-dessus.
Étape 2) Appelez la méthode Peek pour lire l'élément supérieur, puis vérifiez la propriété Count pour confirmer qu'aucun élément n'a été supprimé.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Stack st = new Stack(); st.Push(1); st.Push(2); st.Push(3); Console.WriteLine(st.Peek()); Console.WriteLine(st.Count); Console.ReadKey(); } } }
Code Explication:-
- Une pile nommée st est déclarée, et les valeurs 1, 2 et 3 sont ajoutées avec la méthode Push, de sorte que 3 devient l'élément le plus haut.
- La méthode Peek renvoie l'élément du dessus sans le supprimer, et la propriété Count indique toujours le nombre total d'éléments dans la pile.
Lorsque le programme s'exécute, il affiche la valeur 3 de Peek puis le compte 3ce qui prouve que l'élément reste sur la pile. Si la pile est vide, Peek lève une exception InvalidOperationException, il est donc prudent de vérifier Count avant d'appeler la fonction.
Pile générique en C#
Les exemples ci-dessus utilisent la classe Stack non générique de System.Collections, qui stocke chaque élément sous forme d'objet. Le code C# moderne privilégie généralement la classe Stack générique. Classe de l'espace de noms System.Collections.Generic. Elle lie la pile à un seul type déclaré, de sorte que le compilateur vérifie chaque opération Push et Pop et qu'aucun transtypage ni box n'est nécessaire.
Les principaux avantages de la pile générique sont énumérées ci-dessous.
- Sécurité du type : Le type est fixé lors de la déclaration, donc seules les valeurs de ce type peuvent être insérées, et les erreurs sont détectées à la compilation.
- Pas de boxe : Les types valeur tels que int sont stockés directement, ce qui évite le coût d'encapsulation que supporte la pile non générique.
- Le nettoyeur lit : Pop et Peek renvoient directement le type déclaré, vous n'avez donc pas besoin de reconvertir le résultat à partir de l'objet.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { Stack<string> st = new Stack<string>(); st.Push("Java"); st.Push("Python"); Console.WriteLine(st.Pop()); Console.ReadKey(); } } }
Dans cet exemple, la pile est déclarée comme Stack Elle n'accepte donc que des valeurs de type chaîne de caractères. La méthode Pop renvoie directement une chaîne de caractères et l'affiche. Python, la dernière valeur transmise. Pour tout nouveau projet, la pile générique est le choix recommandé.
Différence entre une pile et une file d'attente en C#
Une pile et un file Les piles et les files d'attente contrôlent toutes deux l'ordre de suppression des éléments, mais selon des règles opposées. Une pile fonctionne selon le principe « dernier entré, premier sorti », tandis qu'une file d'attente fonctionne selon le principe « premier entré, premier sorti ». Choisir la bonne méthode permet aux autres développeurs de comprendre clairement l'intention de votre code.
Les principales différences sont énumérées ci-dessous :
- Commande: Une pile retire d'abord l'élément ajouté le plus récemment (LIFO), tandis qu'une file d'attente retire d'abord l'élément le plus ancien (FIFO).
- Méthodologie: Une pile utilise les opérations Push et Pop, tandis qu'une file d'attente utilise les opérations Enqueue pour ajouter et Dequeue pour retirer.
- Accès à l'élément supérieur : Une pile lit son élément suivant avec Peek, et une file d'attente lit son élément suivant avec Peek depuis le début.
- Utilisations typiques: Les piles s'adaptent aux fonctionnalités d'annulation, à l'évaluation d'expressions et à la récursivité. tracroi, tandis que les files d'attente s'adaptent à la planification, à la mise en mémoire tampon et au parcours en largeur.
Les deux types sont disponibles sous forme générique sous le nom de Stack. et file d'attente dans System.Collections.Generic, vous bénéficiez donc d'une sécurité de type quel que soit votre choix.




