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): [View full width]
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. null s are often used as placeholders on the Stack to separate consecutive objects. |