Implementing Stack in C# - GeeksforGeeks

30 Oct, 2018
Stack is a linear data structure. It follows LIFO(Last In First Out) pattern for Input/output. Following three basic operations are performed in the stack:
Push: Adds an item in the stack. If the stack is full, then it is said to be a stack Overflow condition.
Pop: Removes an item from the stack. The items are popped in the reversed order in which they are pushed. If the stack is empty, then it is said to be a stack Underflow condition.
Peek : Return the topmost element of stack.
Given below is the C# code to implement Stack using Arrays
using System;  namespace StackImplementation{    internal class Stack    {        static readonly int MAX = 1000;        int top;        int[] stack = new int[MAX];          bool IsEmpty()        {            return (top < 0);        }        public Stack()        {            top = -1;        }        internal bool Push(int data)        {            if (top >= MAX)            {                Console.WriteLine("Stack Overflow");                return false;            }            else            {                stack[++top] = data;                return true;            }        }          internal int Pop()        {            if (top < 0)            {                Console.WriteLine("Stack Underflow");                return 0;            }            else            {                int value = stack[top--];                return value;            }        }          internal void Peek()        {            if (top < 0)            {                Console.WriteLine("Stack Underflow");                return;            }            else                Console.WriteLine("The topmost element of Stack is : {0}", stack[top]);        }          internal void PrintStack()        {            if (top < 0)            {                Console.WriteLine("Stack Underflow");                return;            }            else            {                Console.WriteLine("Items in the Stack are :");                for (int i = top; i >= 0; i--)                {                    Console.WriteLine(stack[i]);                }            }        }    }      class Program    {        static void Main(string[] args)        {            Stack myStack = new Stack();              myStack.Push(10);            myStack.Push(20);            myStack.Push(30);            myStack.Push(40);            myStack.PrintStack();            myStack.Peek();            Console.WriteLine("Item popped from Stack : {0}", myStack.Pop());            myStack.PrintStack();        }    }}
Output:
Items in the Stack are :
40
30
20
10
The topmost element of Stack is : 40
Item popped from Stack : 40
Items in the Stack are :
30
20
10

This article is contributed by Ankit Sharma. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
CSharp-Generic-Namespace
CSharp-Generic-Stack
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C# | Delegates
C# | Abstract Classes
Difference between Ref and Out keywords in C#
Extension Method in C#
C# | Replace() Method
C# | Class and Object
C# | Constructors
Introduction to .NET Framework
C# | Data Types
HashSet in C# with Examples