DEV Community

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

Posted on

1 1 1 1 1

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

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay