১৪-৫ঃ STL List এর সাহায্যে Queue তৈরি করা

এই মডিউল এ আমরা দেখবো কীভাবে Doubly LInked List এর লাইব্রেরি STL List এর সাহায্যে Queue ইমপ্লিমেন্ট করা যায়। আমরা যেহেতু , Doubly Linked List এর সাহায্যে গত পেজে Queue ইমপ্লিমেন্ট করা শিখেছি , এবং STL List হলো Doubly Linked List এর STL লাইব্রেরী । তাই আমরা Doubly Linked লিস্ট এর সকল কাজ এইবার List দিয়ে করে ফেলবো। প্রথমে দেখে নেয়া যাক , Queue এর ফাংশন গুলোর সাথে STL List এর কোথায় কোথায় মিল রয়েছে। 1. push() -> এই অপারেশনের মাধ্যমে আমরা Queue এর শেষে একটি ভ্যালু Insertion করতে পারি। যা List এর list. push_ back() ফাংশনের মতো । 2. front() -> এই অপারেশনের সাহায্যে আমরা Queue এর শুরুতে কোন ভ্যালু আছে তা জানতে পারি। এই অপারেশন টি List এর list.front() ফাংশনের মতো কাজ করে। 3. pop() -> এই অপারেশনের মাধ্যমে আমরা Queue তা বা লাইনে সবার শুরুতে যে ভ্যালু আছে তা Queue থেকে মুছে দিতে পারি। যা List এর list.pop_front() এর মতো কাজ করে

  1. size() -> এই অপারেশনের মাধ্যমে আমরা Queue তে কতটি ভ্যালু আছে তা জানতে পারি। একটি List এর সাইজ আমরা list.size() ফাংশনের সাহায্যে পেতে পারি । এই ক্ষেত্রে কোনো সাইজ ট্রেকার এর প্রয়োজন নেই

  2. empty() -> এই ফাংশনের সাহায্যে আমরা দেখতে পারি Queue খালি কিনা। একটি List খালি কিনা আমরা তা খুব সহজে STL List এর builtin ফাংশন list.empty() কল করে পেয়ে যেতে পারি ।

আসুন এই Simple কাজ গুলো কোডের সাহায্যে দেখে নেয়া যাক। Code:

#include <bits/stdc++.h>
using namespace std;
class myQueue
{
public:
    list<int> l; // প্রথমে int টাইপের একটি list ডিক্লয়ার করলাম 
   
    void push(int val) // Queue তে ভ্যালু পুশ করার ফাংশন
    {
        l.push_back(val); //ভ্যালুটি List এর ব্যাকে push করে দেয়া হলো 
    }
    void pop() //queue এর সবার সামনের ভ্যালুটি পপ করার ফাংশন
    {
        l.pop_front(); // list এর front এর ভ্যালুটি delete করে দেয়া হলো 
    }
    int front() // queue এর front ভ্যালুটি access করা হচ্ছে 
   {
        return l.front(); // list এর front ভ্যালুটি রিটার্ন করে দেয়া হলো 
    }
    int size()
    {
        return l.size(); // list এর সাইজ রিটার্ন করা হলো 
    }
    bool empty()
    {
        return l.empty(); // list খালি কিনা চেক করা হচ্ছে 
    }
};
int main()
{
    myQueue q;
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        q.push(x);
    }
    while (!q.empty())
    {
        cout << q.front() << endl;
        q.pop();
    }

    return 0;
}

Last updated