Exercise
Implementing a stack using array
Objetive
Implementing a stack
Example Code
// Importing necessary namespace for basic functionalities
using System; // For basic functionalities like Console
// Class that implements a Stack using an array
class Stack
{
private int[] stackArray; // Array to hold the stack elements
private int top; // Index for the top of the stack
private int capacity; // Maximum capacity of the stack
// Constructor to initialize the stack with a given capacity
public Stack(int capacity)
{
this.capacity = capacity; // Set the stack's maximum capacity
stackArray = new int[capacity]; // Initialize the array to hold the stack elements
top = -1; // The stack is initially empty, so top is -1
}
// Method to add an element to the stack (Push operation)
public void Push(int element)
{
if (top == capacity - 1) // Check if the stack is full
{
Console.WriteLine("Stack is full! Cannot push.");
return;
}
stackArray[++top] = element; // Increment top and add the element to the stack
Console.WriteLine($"Pushed: {element}");
}
// Method to remove the top element from the stack (Pop operation)
public void Pop()
{
if (top == -1) // Check if the stack is empty
{
Console.WriteLine("Stack is empty! Cannot pop.");
return;
}
int poppedElement = stackArray[top--]; // Get the top element and decrement top
Console.WriteLine($"Popped: {poppedElement}");
}
// Method to display all elements in the stack
public void DisplayStack()
{
if (top == -1) // Check if the stack is empty
{
Console.WriteLine("Stack is empty.");
return;
}
Console.WriteLine("Stack contents:");
for (int i = top; i >= 0; i--) // Display elements from top to bottom
{
Console.WriteLine(stackArray[i]);
}
}
}
// Main program to demonstrate the Stack functionality
class Program
{
static void Main(string[] args)
{
// Create a stack with a capacity of 5
Stack stack = new Stack(5);
// Menu to allow user to interact with the stack
while (true)
{
Console.WriteLine("\nMenu:");
Console.WriteLine("1. Push an element");
Console.WriteLine("2. Pop an element");
Console.WriteLine("3. Display the stack");
Console.WriteLine("4. Exit");
Console.Write("Enter your choice: ");
string choice = Console.ReadLine();
if (choice == "1")
{
// Prompt user to enter an element to push onto the stack
Console.Write("Enter an element to push: ");
int element = int.Parse(Console.ReadLine());
stack.Push(element); // Push the element onto the stack
}
else if (choice == "2")
{
// Pop an element from the stack
stack.Pop(); // Pop the top element from the stack
}
else if (choice == "3")
{
// Display the current stack
stack.DisplayStack(); // Show the current elements in the stack
}
else if (choice == "4")
{
// Exit the program
break;
}
else
{
// Invalid choice
Console.WriteLine("Invalid choice. Please try again.");
}
}
}
}