C# Examples

Stack in C#



A stack is a linear dynamic data structure that follows Last-In/First-Out (LIFO) principle. In a stack, addition of a new element and deletion of an element occurs at the same end which implies that the element which is added last in the stack will be the first to be removed from the stack.

Features of stack

  • It is a dynamic data structure.
  • It has dynamic size.
  • It uses dynamic memory allocation.

Operations of a stack

  • isEmpty(): Checks whether the stack is empty or not.
  • size(): Returns the size of the stack.
  • topElement(): Returns the top element of the stack.
  • push(x): Adds a new element ‘x’ at the top of the stack. Consequently, size of the stack increases by 1.
    Stack Push
  • pop(): Deletes the top element of the stack. Consequently, size of the stack decreases by 1.
    Stack Pop

Implementation of Stack

using System;

class CreateStack {
  private int MAX = 100;
  private int top;
  private int[] stack;

  public CreateStack() {
    //assigning MAX size of the stack
    stack = new int[MAX];   
    top = -1;
  }

  // create a method to check whether 
  // the stack is empty or not  
  public void isEmpty() {
    if(top == -1) {
      Console.WriteLine("Stack is empty.");
    } else {
      Console.WriteLine("Stack is not empty.");
    }
  }

  //create a method to return size of the stack 
  public int size() {
     return top+1;
  } 

  //create a method to add new element       
  public void push(int x){
    if(top == (MAX - 1)){
      Console.WriteLine("Stack size limit reached.");
    } else {
      stack[++top] = x;
      Console.WriteLine(x + " is added into the stack.");
    }
  }

  //create a method to delete top element       
  public void pop(){
    if(top < 0){
      Console.WriteLine("Stack is empty.");
    } else {
      int x = stack[top--];
      Console.WriteLine(x + " is deleted from the stack.");
    }
  }  

  //create a method to get top element       
  public int topElement() {
    if(top < 0) {
      Console.WriteLine("Stack is empty.");
      return 0;
    } else {
      return stack[top];
    }
  }
}

// test the code
class MyProgram {
  static void Main(string[] args) {
    CreateStack MyStack = new CreateStack();
    MyStack.push(10);
    MyStack.push(20);
    MyStack.push(30);
    MyStack.push(40);

    MyStack.pop();
    MyStack.isEmpty();  
  }
}

The above code will give the following output:

10 is added into the stack.
20 is added into the stack.
30 is added into the stack.
40 is added into the stack.
40 is deleted from the stack.
Stack is not empty.