Pile C# avec exemples Push & Pop
โก Rรฉsumรฉ intelligent
Stack in C# is a collection from the System.Collections namespace that follows the last in, first out (LIFO) principle, where the Push method adds an element to the top and the Pop method removes it.

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.
C# Stack Peek() Method
The Push and Pop methods work with the top of the stack, but sometimes you only need to look at the top element without removing it. The Peek method does exactly that. It returns the topmost value of the stack while leaving the collection unchanged, which is useful when you want to test the next item before deciding to pop it.
รtape 1) Create a stack and push three elements onto it, so the value 3 sits on top.
รtape 2) Call the Peek method to read the top element, then check the Count property to confirm nothing was removed.
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:-
- A stack named st is declared, and the values 1, 2, and 3 are added with the Push method, so 3 becomes the topmost element.
- The Peek method returns the top element without removing it, and the Count property still reports the full number of items in the stack.
When the program runs, it prints the value 3 from Peek and then the count 3, which proves the element stays on the stack. If the stack is empty, Peek throws an InvalidOperationException, so it is safe to check Count before calling it.
Generic Stack<T> in C#
The examples above use the non-generic Stack class from System.Collections, which stores every element as an object. Modern C# code usually prefers the generic Stack<T> class from the System.Collections.Generic namespace. It binds the stack to a single declared type, so the compiler checks every Push and Pop and no casting or boxing is needed.
The key benefits of the generic Stack<T> are listed below.
- Sรฉcuritรฉ du type : The type is fixed at declaration, so only values of that type can be pushed, and errors are caught at compile time.
- No boxing: Value types such as int are stored directly, which avoids the boxing cost that the non-generic Stack pays.
- Cleaner reads: Pop and Peek return the declared type directly, so you do not cast the result back from object.
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(); } } }
In this example the stack is declared as Stack<string>, so it accepts only string values. The Pop method returns a string directly and prints Python, the last value pushed. For any new project, the generic Stack<T> is the recommended choice.
Difference Between Stack and Queue in C#
A stack and a file are both collections that control the order in which elements are removed, but they use opposite rules. A stack is last in, first out, while a queue is first in, first out. Choosing the right one makes the intent of your code clear to other developers.
Les principales diffรฉrences sont รฉnumรฉrรฉes ci-dessous :
- Commande: A stack removes the most recently added element first (LIFO), while a queue removes the oldest element first (FIFO).
- Mรฉthodologie: A stack uses Push and Pop, whereas a queue uses Enqueue to add and Dequeue to remove.
- Top-element access: A stack reads its next item with Peek, and a queue reads its next item with Peek from the front.
- Utilisations typiques: Stacks fit undo features, expression evaluation, and recursion tracking, while queues fit scheduling, buffering, and breadth-first traversal.
Both types are available in generic form as Stack<T> and Queue<T> in System.Collections.Generic, so you gain type safety with either choice.




