As the name implies, a Stack encapsulates a standard LIFO abstract data type. You use the Pop and Push methods of the Stack class to retrieve and insert elements respectively. Like Queue, Stack also has a Peek method which returns the element that is next to be popped out without actually popping it out.
Calling Pop() on an empty Stack will result in a System.InvalidOperationException exception. To prevent that from happening, you can check the Stack's Count public property before invoking Pop().
1: using System;
2: using System.Collections;
3:
4: public class TestClass{
5: public static void Main(){
6:
7: Stack s = new Stack();
8:
9: // Using Push
10: s.Push("A");
11: s.Push("B");
12: s.Push("C");
13: PrintCollection(s);
14:
Output:
Stack elements: C,B,A,
The static PrintCollection method defined on line 40 below prints out the elements in the Stack object passed in.
15: // Using Count
16: Console.WriteLine("Count: " + s.Count);
17:
Output:
Count: 3
18: // Using Peek
19: string token = (string)s.Peek();
20: Console.WriteLine("Peeked:" + token);
21: PrintCollection(s);
22:
Output:
Peeked:C Stack elements: C,B,A,
23: // Using Pop
24: token = (string)s.Pop();
25: Console.WriteLine("Popped:" + token);
26: PrintCollection(s);
27:
Output:
Popped:C Stack elements: B,A,
Notice that the last element pushed in (string C) is popped out first.
28: token = (string)s.Pop(); 29: Console.WriteLine("Popped:" + token); 30: PrintCollection(s); 31:
Output:
Popped:B Stack elements: A,
32: token = (string)s.Pop(); 33: Console.WriteLine("Popped:" + token); 34: PrintCollection(s); 35:
Output:
Popped:A Stack elements:
36: token = (string)s.Pop(); // InvalidOperationException
Output (runtime exception):
Unhandled Exception: System.InvalidOperationException: Stack empty at System.Collections .Stack.Pop() at TestClass.Main()
When attempting to Pop an empty Stack, an InvalidOperationException will be thrown.
37: } 38: 39: // Prints out all elements in the Queue 40: public static void PrintCollection (Stack s){ 41: IEnumerator enumerator = s.GetEnumerator(); 42: Console.Write("Stack elements: "); 43: 44: while (enumerator.MoveNext()) 45: Console.Write(enumerator.Current + ","); 46: 47: Console.WriteLine(); 48: } 49: }
It is possible to Push onto a Stack a null instead of an object. nulls are often used as placeholders on the Stack to separate consecutive objects.
18.117.93.0