This C++ program demonstrates how to implement a stack using an array. A stack is a LIFO (Last In First Out) data structure used in various programming scenarios.
Program Code
#include <iostream>
class Stack {
private:
int top;
int capacity;
int* array;
public:
Stack(int size) : capacity(size), top(-1) {
array = new int[capacity];
}
~Stack() {
delete[] array;
}
void push(int value) {
if (top == capacity - 1) {
std::cout << "Stack Overflow" << std::endl;
return;
}
array[++top] = value;
std::cout << "Pushed " << value << " to stack" << std::endl;
}
int pop() {
if (top == -1) {
std::cout << "Stack Underflow" << std::endl;
return -1;
}
return array[top--];
}
int peek() {
if (top == -1) {
std::cout << "Stack is empty" << std::endl;
return -1;
}
return array[top];
}
void display() {
if (top == -1) {
std::cout << "Stack is empty" << std::endl;
return;
}
std::cout << "Stack elements are: ";
for (int i = top; i >= 0; i--) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
}
};
int main() {
Stack stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.display();
std::cout << "Top element is: " << stack.peek() << std::endl;
std::cout << "Popped element: " << stack.pop() << std::endl;
stack.display();
return 0;
}
Class and Function Documentation
- Constructor Stack(int size): Initializes a new stack with a specified size.
- void push(int value): Adds a value to the top of the stack. Prints an error message if the stack is full.
- int pop(): Removes the top element of the stack and returns it. Prints an error message if the stack is empty.
- int peek(): Returns the top element without removing it from the stack. Prints an error message if the stack is empty.
- void display(): Displays all elements in the stack from top to bottom.
Example Usage
Stack stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.display(); // Outputs the contents of the stack
std::cout << "Top element is: " << stack.peek() << std::endl; // Outputs the top element
std::cout << "Popped element: " << stack.pop() << std::endl; // Outputs the popped element
stack.display(); // Outputs the remaining contents of the stack

