Quick actions

cmd+k|ctrl+k

Navigation

Languages

stackUsingLI_parth

Snippet info

Language

Cpp

Visibility

public

Author

parthbhadra14

Created

2023-02-09T11:06:47.679496Z

Updated

2023-02-09T11:07:25.719609Z

// given an LI - 
// keep adding at the head for push
// keep removing at the head for pop
#include <iostream>
using namespace std;


class Node {
    public:
    int data;
    Node* next;
    Node (int data) {
        this->data = data;
        this->next = NULL;
    }

};

class Stack {    
    public:
    Node* linkedList = new Node(-1);
    void push(Node* A);
    int pop();
    void display();
};

void Stack::push(Node* A) {
    A->next = linkedList;
    linkedList = A;
}

int Stack::pop() {
    int elementToBeDeleted = linkedList->data;
    if(elementToBeDeleted == -1) {
        cout << "Empty Stack!";
        return -1;
    }
    linkedList = linkedList->next;  
    return elementToBeDeleted;  
}

void Stack::display() {
    Node* iterator = linkedList;
    while(iterator->data != -1) {
        cout << iterator->data << " ";
        iterator =  iterator->next;
    }
    cout << endl;
}

int main() {

    Node* node1 = new Node(10);
    Node* node2 = new Node(20);
    Node* node3 = new Node(30);

    Stack myStack;

    myStack.push(node1);
    myStack.display();

    myStack.push(node2);
    myStack.display();

    myStack.push(node3);
    myStack.display();

    int deletedElement1 = myStack.pop();
    cout << "deleted element: " << deletedElement1 << endl;
    myStack.display();

    int deletedElement2 = myStack.pop();
    cout << "deleted element: " << deletedElement2 << endl;
    myStack.display();

    int deletedElement3 = myStack.pop();
    cout << "deleted element: " << deletedElement3 << endl;
    myStack.display();

    int deletedElement4 = myStack.pop();
    myStack.display();

    return 0;
}
INFO