মডিউল ১৩-৭ঃ Stack Implement using Doubly Linked List

এইবার আমরা দেখবো কিভাবে doubly linked list দিয়ে আমরা stack implement করতে পারি।

Code:

#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
    int val;
    Node *next;
    Node *prev;
    Node(int val)
    {
        this->val = val;
        this->next = NULL;
        this->prev = NULL;
    }
};
class myStack
{
public:
    Node *head = NULL; //এখানে একটা doubly linked list এর head নেয়া হচ্ছে।
    Node *tail = NULL;  //এখানে একটা doubly linked list এর tail নেয়া হচ্ছে।
    int sz = 0;  //এখানে size এর জন্য একটা variable নেয়া হচ্ছে।
    
// এখানে doubly linked list এর tail এ value insert করার function নেয়া হচ্ছে।
    void push(int val)
    {
        sz++; //size track রাখা হচ্ছে।
        Node *newNode = new Node(val);
        if (head == NULL)
        {
            head = newNode;
            tail = newNode;
            return;
        }
        newNode->prev = tail;
        tail->next = newNode;
        tail = tail->next;
    }

// এখানে doubly linked list এর tail এর value delete করার function নেয়া হচ্ছে।
    void pop()
    {
        sz--;
        Node *deleteNode = tail;
        tail = tail->prev;
        if (tail == NULL)
        {
            head = NULL;
        }
        else
        {
            tail->next = NULL;
        }

        delete deleteNode;
    }

//এখানে tail এর value  return করার function নেয়া হচ্ছে।
    int top()
    {
        return tail->val;
    }
//এখানে size method এর মাধ্যমে track রাখা size variable return করা হচ্ছে।
    int size()
    {
        return sz;
    }
// size variable কোনো value না থাকলে আমরা empty true দিচ্ছি।
    bool empty()
    {
        if (sz == 0)
            return true;
        else
            return false;
    }
};

int main()
{
    myStack st;
    // st.pop();
    cout << st.top() << endl;

    // int n;
    // cin >> n;
    // for (int i = 0; i < n; i++)
    // {
    //     int x;
    //     cin >> x;
    //     st.push(x);
    // }
    // while (!st.empty())
    // {
    //     cout << st.top() << endl;
    //     st.pop();
    // }
    return 0;
}

Last updated