C# Coding of Data Structures for Stack, Queue and Circular Queue

Stack

A Stack is an ordered collection of items into which new items may be inserted and from which item may deleted one end called the top of the stack.

namespace DataStructure

{

public struct Stack<T>

{

public T Top;

public T[] Items;

}

public class StackStructure

{

public void Demo()

{

var items = Convert.ToInt16(Console.ReadLine());

for (int i = 0; i < items; i++)

{

Console.Write("Enter the " + i.ToString() + " Value :");

Push(Convert.ToInt16(Console.ReadLine()));

}

for (int i = 0; i < items; i++)

{

Console.WriteLine("poped the " + i.ToString() + " Value :" + Pop());

Console.ReadLine();

}

Console.ReadLine();

}

public StackStructure(int value)

{

stack.Top = -1;

stack.Items = new int[value];

}

Stack<int> stack = new Stack<int>();

public int Pop()

{

stack.Top--;

if (stack.Items.Length <= 0)

{

Console.WriteLine("The Stack is Empty");

}

return stack.Items[stack.Top + 1];

}

public void Push(int item)

{

stack.Top++;

stack.Items[stack.Top] = item;

}

}

}

Queue: It is similar to stack but inserted in one end and remove from other end

namespace DataStructure

{

public struct Queue

{

public int Front;

public int Rear;

public int[] items;

}

public class QueueStructure

{

Queue queue = new Queue();

public QueueStructure(int value)

{

queue.items = new int[value];

}

public void Demo()

{

queue.Front = 0;

queue.Rear = -1;

var items = Convert.ToInt16(Console.ReadLine());

for (int i = 0; i < queue.items.Length; i++)

{

Console.Write("Enter the " + i.ToString() + " Value :");

Insert(Convert.ToInt16(Console.ReadLine()));

}

Display();

Delete();

Display();

Delete();

Display();

Delete();

Display();

Console.ReadLine();

}

public void Display()

{

Console.WriteLine("The items are");

if (queue.Rear < queue.Front)

{

Console.WriteLine("Queue is Empty");

}

else

{

for (int i = queue.Front; i <= queue.Rear; i++)

{

Console.WriteLine(queue.items[i]);

}

}

}

public int Delete()

{

if (queue.Front > queue.Rear)

Console.WriteLine("Queue is empty");

else

queue.Front++;

return -1;

}

public void Insert(int value)

{

queue.Rear++;

queue.items[queue.Rear] = value;

}

}

}

Circular Queue: As same as the queue but in circular structure.

namespace DataStructure

{

public struct CircularQueue

{

public int Front;

public int Rear;

public int[] items;

}

public class CircularQueueStructure

{

CircularQueue queue = new CircularQueue();

public CircularQueueStructure(int value)

{

queue.items = new int[value];

}

public void Demo()

{

queue.Front = -1;

queue.Rear = -1;

var items = Convert.ToInt16(Console.ReadLine());

for (int i = 0; i <= queue.items.Length; i++)

{

Console.Write("Enter the " + i.ToString() + " Value :");

Insert(i);

}

Display();

Delete();

Insert(4);

Display();

Insert(4);

Delete();

Delete();

Insert(4);

Display();

Insert(5);

Display();

Insert(1);

Console.ReadLine();

}

public void Display()

{

Console.WriteLine("The items are");

{

for (int i = 0; i < queue.items.Length; i++)

{

Console.WriteLine(queue.items[i]);

}

}

}

public int Delete()

{

queue.Front++;

return -1;

}

public void Insert(int value)

{

if (((queue.Rear + 1) % 5) == queue.Front)

Console.WriteLine("queue is full");

else

{

queue.Rear++;

queue.Rear = (queue.Rear) % 5;

queue.items[queue.Rear] = value;

}

if (queue.Front == -1)

queue.Front = 0;

}

}

}