১৪-৫ঃ 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() এর মতো কাজ করে
size() -> এই অপারেশনের মাধ্যমে আমরা Queue তে কতটি ভ্যালু আছে তা জানতে পারি। একটি List এর সাইজ আমরা list.size() ফাংশনের সাহায্যে পেতে পারি । এই ক্ষেত্রে কোনো সাইজ ট্রেকার এর প্রয়োজন নেই
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