DEV Community

Cover image for Stack - DSA | Part 5 |
Madhuban Khatri
Madhuban Khatri

Posted on

Stack - DSA | Part 5 |

In computer science, a stack is an abstract data type that represents a collection of elements with a last-in-first-out (LIFO) access policy.

It is called a "stack" because it resembles a stack of plates or a stack of books, where you can only add or remove elements from the top of the stack. The element that was added last is the first one to be removed.

The two fundamental operations of a stack are "push" (which adds an element to the top of the stack) and "pop" (which removes the top element from the stack). Additionally, there are also "peek" operations, which allow you to examine the top element without removing it, and "isEmpty" operations, which check if the stack is empty.

Stacks are often used in computer programs for storing temporary data or for implementing algorithms that require a LIFO structure, such as expression evaluation, recursion, and undo mechanisms.

Implementation of Stack

#include <bits/stdc++.h>

using namespace std;

#define MAX 1000

class Stack {
    int top;

public:
    int a[MAX];

    Stack() { top = -1; }
    bool push(int x);
    int pop();
    int peek();
    bool isEmpty();
};

bool Stack::push(int x)
{
    if (top >= (MAX - 1)) {
        cout << "Stack Overflow";
        return false;
    }
    else {
        a[++top] = x;
        cout << x << " pushed into stack\n";
        return true;
    }
}

int Stack::pop()
{
    if (top < 0) {
        cout << "Stack Underflow";
        return 0;
    }
    else {
        int x = a[top--];
        return x;
    }
}
int Stack::peek()
{
    if (top < 0) {
        cout << "Stack is Empty";
        return 0;
    }
    else {
        int x = a[top];
        return x;
    }
}

bool Stack::isEmpty()
{
    return (top < 0);
}


int main()
{
    class Stack s;
    s.push(10);
    s.push(20);
    s.push(30);
    cout << s.pop() << " Popped from stack\n";


    cout << "Top element is : " << s.peek() << endl;


    cout <<"Elements present in stack : ";
    while(!s.isEmpty())
    {
        cout << s.peek() <<" ";
        s.pop();
    }

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)