top
April flash sale

Search

C# Tutorial

The Stack Collection is used when the data items need to be arranged in a LIFO (Last In First Out) manner. When a data item is entered into the collection, it is called push. When the data item is removed from the collection, it is called pop.Constructors in Stack CollectionThe different constructors and their description is given as follows:Table: Constructors in Stack Collection in C#Source: MSDNConstructorsDescriptionStack()This constructor initializes a new instance of the Stack class that is empty and has the default initial capacity.Stack(ICollection)This constructor initializes a new instance of the Stack class that contains elements copied from the specified collection and has the same initial capacity as the number of elements copiedStack(Int32)This constructor initializes a new instance of the Stack class that is empty and has the specified initial capacity or the default initial capacity, whichever is greater.Properties in Stack CollectionThe different properties and their description is given as follows:Table: Properties in Stack Collection in C#Source: MSDNPropertiesDescriptionCountThis property obtains the number of elements contained in the Stack.IsSynchronizedThis property gets a value indicating whether access to the Stack is synchronized (thread safe).SyncRootThis property gets an object that can be used to synchronize access to the Stack.Methods in Stack CollectionThe different methods and their description is given as follows:Table: Methods in Stack Collection in C#Source: MSDNMethodsDescriptionClear()This method removes all the objects from the Stack.Clone()This method creates a shallow copy of the Stack.Contains(Object)This method determines whether an element is in the Stack or not.CopyTo(Array, Int32)This method copies the Stack to an existing one-dimensional Array, starting at the specified array index.Equals(Object)This method determines whether the specified object is equal to the current object.GetEnumerator()This method returns an IEnumerator for the Stack.GetHashCode()This method serves as the default hash function.GetType()This method gets the Type of the current instance.Peek()This method returns the object at the top of the Stack without removing it.Pop()This method removes and returns the object at the top of the Stack.Push(Object)This method inserts an object at the top of the Stack.Synchronized(Stack)This method returns a synchronized (thread safe) wrapper for the Stack.ToArray()This method copies the Stack to a new array.ToString()This method returns a string that represents the current object.Let us now see an example, wherein we are adding and removing elements from a stack:using System; using System.Collections; namespace StackExample {   class Example {      static void Main(string[] args) {         Stack st = new Stack();         st.Push('w');         st.Push('x');         st.Push('y');         Console.WriteLine("Stack = ");         foreach (char ch in st) {            Console.Write(ch + " ");         }         Console.WriteLine();         st.Push('s');         st.Push('t');         st.Push('u');         st.Push('v');         Console.WriteLine("Stack after adding two elements... ");         foreach (char ch in st) {            Console.Write(ch + " ");         }         Console.WriteLine();         Console.WriteLine("Pop a value!");         st.Pop();         Console.WriteLine("Current stack:");         foreach (char c in st) {            Console.Write(c + " ");         }         Console.WriteLine("\nPop another value!");         st.Pop();         Console.WriteLine("Current stack:");         foreach (char c in st) {            Console.Write(c + " ");         }      }   } }The output of the above program is given below:Stack = y x w Stack after adding two elements... v u t s y x w Pop a value! Current stack: u t s y x w Pop another value! Current stack: t s y x wStack OperationsSome of the stack operations are given as follows:Push an element into StackAn element is pushed into the stack using the Push() method. The program that demonstrates this is given as follows:Source Code: Program to push elements in Stack in C#using System; using System.Collections; namespace StackDemo {   class Example   {      static void Main(string[] args)      {         Stack s = new Stack();         s.Push(1);         s.Push(2);         s.Push(3);         s.Push(4);         Console.WriteLine("Stack Elements are: ");         foreach (int i in s)         {            Console.WriteLine(i);         }      }   } }The output of the above program is given below:Stack Elements are: 4 3 2 1Pop an element from StackThe top element can be popped from the stack using the Pop() method. The program that demonstrates this is given as follows:Source Code: Program to pop elements from Stack in C#using System; using System.Collections; namespace StackDemo {   class Example   {      static void Main(string[] args)      {         Stack s = new Stack();         s.Push(1);         s.Push(2);         s.Push(3);         s.Push(4);         Console.WriteLine("Original Stack: ");         foreach (int i in s)         {            Console.WriteLine(i);         }         s.Pop();         s.Pop();         Console.WriteLine("Stack after Pop() operation: ");         foreach (int i in s)         {            Console.WriteLine(i);         }      }   } }The output of the above program is given below:Original Stack: 4 3 2 1 Stack after Pop() operation: 2 1Peek into the stackThe element at the top of the stack can be viewed without removing it using the Peek() method. The program that demonstrates this is given as follows:Source Code: Program to peek top element in Stack in C#using System; using System.Collections; namespace StackDemo {   class Example   {      static void Main(string[] args)      {         Stack s = new Stack();         s.Push(1);         s.Push(2);         s.Push(3);         s.Push(4);         Console.WriteLine("Stack elements are: ");         foreach (int i in s)         {            Console.WriteLine(i);         }         Console.WriteLine("Element at top is {0}", s.Peek());      }   } }The output of the above program is given below: Stack elements are: 4 3 2 1 Element at top is 4Reverse a stackLet us see how we can reverse a stack in C#:Source Code: Program to reverse a Stack in C#using System; using System.Collections; namespace StackExample { public class Example {   public static void Main(string[] args) {   Stack currentStack = new Stack();   Stack revStack = new Stack();   currentStack.Push('A');   currentStack.Push('B');   currentStack.Push('C');   currentStack.Push('D');   currentStack.Push('E');   currentStack.Push('F');   Console.WriteLine("Current stack... ");   foreach(char ch in currentStack) {    Console.Write(ch + "\n");   }   while (currentStack.Count != 0) {    revStack.Push(currentStack.Pop());   }   Console.WriteLine("\nReversed stack... ");   foreach(char cH in revStack) {    Console.Write(cH + "\n");   }  } } }The output of the above program is given below: Current stack... F E D C B A Reversed stack... A B C D E FCount the number of elements in StackTo count the number of elements in Stack, use the Count property:Source Code: Program to count the number of elements in Stack in C#using System; using System.Collections; namespace StackExample {   class Example {      static void Main(string[] args) {         Stack st = new Stack();         st.Push('w');         st.Push('x');         st.Push('y');         Console.WriteLine("Count of elements in the Current Stack: "+st.Count);         Console.WriteLine("Stack = ");         foreach (char ch in st) {            Console.Write(ch + " ");         }         Console.WriteLine();         st.Push('s');         st.Push('t');         st.Push('u');         st.Push('v');         Console.WriteLine("Stack after adding two elements... ");         foreach (char ch in st) {            Console.Write(ch + " ");         }         Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);         Console.WriteLine();         Console.WriteLine("Pop a value!");         st.Pop();         Console.WriteLine("Current stack:");         foreach (char c in st) {            Console.Write(c + " ");         }         Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);         Console.WriteLine("\nPop another value!");         st.Pop();         Console.WriteLine("Current stack:");         foreach (char c in st) {            Console.Write(c + " ");         }         Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);      }   } }The output of the above program is given below: Count of elements in the Current Stack: 3 Stack =  y x w  Stack after adding two elements...  v u t s y x w  Count of elements in the Current Stack: 7 Pop a value! Current stack: u t s y x w  Count of elements in the Current Stack: 6 Pop another value! Current stack: t s y x w  Count of elements in the Current Stack: 5
logo

C# Tutorial

Stack Collection in C#

The Stack Collection is used when the data items need to be arranged in a LIFO (Last In First Out) manner. When a data item is entered into the collection, it is called push. When the data item is removed from the collection, it is called pop.

Constructors in Stack Collection

The different constructors and their description is given as follows:

Table: Constructors in Stack Collection in C#

Source: MSDN

ConstructorsDescription
Stack()This constructor initializes a new instance of the Stack class that is empty and has the default initial capacity.
Stack(ICollection)This constructor initializes a new instance of the Stack class that contains elements copied from the specified collection and has the same initial capacity as the number of elements copied
Stack(Int32)

This constructor initializes a new instance of the Stack class that is empty and has the specified initial capacity or the default initial capacity, whichever is greater.

Properties in Stack Collection

The different properties and their description is given as follows:

Table: Properties in Stack Collection in C#

Source: MSDN

PropertiesDescription
CountThis property obtains the number of elements contained in the Stack.
IsSynchronizedThis property gets a value indicating whether access to the Stack is synchronized (thread safe).
SyncRootThis property gets an object that can be used to synchronize access to the Stack.

Methods in Stack Collection

The different methods and their description is given as follows:

Table: Methods in Stack Collection in C#

Source: MSDN

MethodsDescription
Clear()This method removes all the objects from the Stack.
Clone()This method creates a shallow copy of the Stack.
Contains(Object)This method determines whether an element is in the Stack or not.
CopyTo(Array, Int32)This method copies the Stack to an existing one-dimensional Array, starting at the specified array index.
Equals(Object)This method determines whether the specified object is equal to the current object.
GetEnumerator()This method returns an IEnumerator for the Stack.
GetHashCode()This method serves as the default hash function.
GetType()This method gets the Type of the current instance.
Peek()This method returns the object at the top of the Stack without removing it.
Pop()This method removes and returns the object at the top of the Stack.
Push(Object)This method inserts an object at the top of the Stack.
Synchronized(Stack)This method returns a synchronized (thread safe) wrapper for the Stack.
ToArray()This method copies the Stack to a new array.
ToString()This method returns a string that represents the current object.

Let us now see an example, wherein we are adding and removing elements from a stack:

using System;
using System.Collections;
namespace StackExample {
  class Example {
     static void Main(string[] args) {
        Stack st = new Stack();
        st.Push('w');
        st.Push('x');
        st.Push('y');
        Console.WriteLine("Stack = ");
        foreach (char ch in st) {
           Console.Write(ch + " ");
        }
        Console.WriteLine();
        st.Push('s');
        st.Push('t');
        st.Push('u');
        st.Push('v');
        Console.WriteLine("Stack after adding two elements... ");
        foreach (char ch in st) {
           Console.Write(ch + " ");
        }
        Console.WriteLine();
        Console.WriteLine("Pop a value!");
        st.Pop();
        Console.WriteLine("Current stack:");
        foreach (char c in st) {
           Console.Write(c + " ");
        }
        Console.WriteLine("\nPop another value!");
        st.Pop();
        Console.WriteLine("Current stack:");
        foreach (char c in st) {
           Console.Write(c + " ");
        }
     }
  }
}

The output of the above program is given below:

Stack =
y x w
Stack after adding two elements...
v u t s y x w
Pop a value!
Current stack:
u t s y x w
Pop another value!
Current stack:
t s y x w

Stack Operations

Some of the stack operations are given as follows:

Push an element into Stack

An element is pushed into the stack using the Push() method. The program that demonstrates this is given as follows:

Source Code: Program to push elements in Stack in C#

using System;
using System.Collections;
namespace StackDemo
{
  class Example
  {
     static void Main(string[] args)
     {
        Stack s = new Stack();
        s.Push(1);
        s.Push(2);
        s.Push(3);
        s.Push(4);
        Console.WriteLine("Stack Elements are: ");
        foreach (int i in s)
        {
           Console.WriteLine(i);
        }
     }
  }
}

The output of the above program is given below:

Stack Elements are:
4
3
2
1

Pop an element from Stack

The top element can be popped from the stack using the Pop() method. The program that demonstrates this is given as follows:

Source Code: Program to pop elements from Stack in C#

using System;
using System.Collections;
namespace StackDemo
{
  class Example
  {
     static void Main(string[] args)
     {
        Stack s = new Stack();
        s.Push(1);
        s.Push(2);
        s.Push(3);
        s.Push(4);
        Console.WriteLine("Original Stack: ");
        foreach (int i in s)
        {
           Console.WriteLine(i);
        }
        s.Pop();
        s.Pop();
        Console.WriteLine("Stack after Pop() operation: ");
        foreach (int i in s)
        {
           Console.WriteLine(i);
        }
     }
  }
}

The output of the above program is given below:

Original Stack:
4
3
2
1
Stack after Pop() operation:
2
1

Peek into the stack

The element at the top of the stack can be viewed without removing it using the Peek() method. The program that demonstrates this is given as follows:

Source Code: Program to peek top element in Stack in C#

using System;
using System.Collections;
namespace StackDemo
{
  class Example
  {
     static void Main(string[] args)
     {
        Stack s = new Stack();
        s.Push(1);
        s.Push(2);
        s.Push(3);
        s.Push(4);
        Console.WriteLine("Stack elements are: ");
        foreach (int i in s)
        {
           Console.WriteLine(i);
        }
        Console.WriteLine("Element at top is {0}", s.Peek());
     }
  }
}

The output of the above program is given below: 

Stack elements are:
4
3
2
1
Element at top is 4

Reverse a stack

Let us see how we can reverse a stack in C#:

Source Code: Program to reverse a Stack in C#

using System;
using System.Collections;
namespace StackExample {
public class Example {
  public static void Main(string[] args) {
  Stack currentStack = new Stack();
  Stack revStack = new Stack();
  currentStack.Push('A');
  currentStack.Push('B');
  currentStack.Push('C');
  currentStack.Push('D');
  currentStack.Push('E');
  currentStack.Push('F');
  Console.WriteLine("Current stack... ");
  foreach(char ch in currentStack) {
   Console.Write(ch + "\n");
  }
  while (currentStack.Count != 0) {
   revStack.Push(currentStack.Pop());
  }
  Console.WriteLine("\nReversed stack... ");
  foreach(char cH in revStack) {
   Console.Write(cH + "\n");
  }
 }
}
}

The output of the above program is given below: 

Current stack...
F
E
D
C
B
A
Reversed stack...
A
B
C
D
E
F

Count the number of elements in Stack

To count the number of elements in Stack, use the Count property:

Source Code: Program to count the number of elements in Stack in C#

using System;
using System.Collections;
namespace StackExample {
  class Example {
     static void Main(string[] args) {
        Stack st = new Stack();
        st.Push('w');
        st.Push('x');
        st.Push('y');
        Console.WriteLine("Count of elements in the Current Stack: "+st.Count);
        Console.WriteLine("Stack = ");
        foreach (char ch in st) {
           Console.Write(ch + " ");
        }
        Console.WriteLine();
        st.Push('s');
        st.Push('t');
        st.Push('u');
        st.Push('v');
        Console.WriteLine("Stack after adding two elements... ");
        foreach (char ch in st) {
           Console.Write(ch + " ");
        }
        Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);
        Console.WriteLine();
        Console.WriteLine("Pop a value!");
        st.Pop();
        Console.WriteLine("Current stack:");
        foreach (char c in st) {
           Console.Write(c + " ");
        }
        Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);
        Console.WriteLine("\nPop another value!");
        st.Pop();
        Console.WriteLine("Current stack:");
        foreach (char c in st) {
           Console.Write(c + " ");
        }
        Console.WriteLine("\nCount of elements in the Current Stack: "+st.Count);
     }
  }
}

The output of the above program is given below: 

Count of elements in the Current Stack: 3
Stack = 
y x w 
Stack after adding two elements... 
v u t s y x w 
Count of elements in the Current Stack: 7

Pop a value!
Current stack:
u t s y x w 
Count of elements in the Current Stack: 6

Pop another value!
Current stack:
t s y x w 
Count of elements in the Current Stack: 5

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments

austin faith

Avery good write-up. Please let me know what are the types of C# libraries used for AI development.

kariya arti

very satisfied!!

jean-Francois Michaud

Good tutorial. Small question: Say, there is : enum numbers { one, two, three} and a string field_enum ="one" how would I from the variable field_enum have a response with value numbers.one so that it can be treated as an enum and not as a string. making a list from the enum, and loop into the list. is not elegant... and may not work is forced value on field is forced ( one = 100).

Kshitiz

Hi Team Knowledge Hut, Thank you for such an informative post like this. I am completely new to this digital marketing field and do not have much idea about this, but your post has become a supportive pillar for me. After reading the blog I would expect to read more about the topic. I wish to get connected with you always to have updates on these sorts of ideas. Regards, Kshitiz

Ed

The reason abstraction can be used with this example is because, the triangle, circle. Square etc can be defined as a shape, for example.....shape c = new circle(5,0)...the abstract object c now points at the circle class. Thus hiding implementation

Suggested Tutorials

Swift Tutorial

Introduction to Swift Tutorial
Swift Tutorial

Introduction to Swift Tutorial

Read More

R Programming Tutorial

R Programming

Python Tutorial

Python Tutorial