কিউর দুটি প্রধান ভেরিয়েশন: ডিকিউ (Double Ended Queue) ও প্রায়োরিটি কিউ।
ডিকিউ (Deque)
ডিকিউতে দুটি এন্ড থেকে ইনসার্ট/ডিলিট করা যায়। STL-এ `deque` ক্লাস ব্যবহার করা হয়।
উদাহরণ (Deque)
#include <iostream> #include <deque> using namespace std; void printDeque(dequeq){ for(auto it = q.begin(); it != q.end(); ++it) cout << *it << " "; cout << endl; } int main(){ deque q; q.push_back(10); q.push_front(20); q.push_back(30); q.push_front(15); cout << "Deque: "; printDeque(q); cout << "Size: " << q.size() << endl; cout << "At pos 2: " << q.at(2) << endl; cout << "Front: " << q.front() << ", Back: " << q.back() << endl; q.pop_front(); cout << "After pop_front: "; printDeque(q); q.pop_back(); cout << "After pop_back: "; printDeque(q); return 0; }
আউটপুট
Currently que is holding: 15 20 10 30 Size: 4 Element at pos 2: 10 Front: 15, Back: 30 After pop_front: 20 10 30 After pop_back: 20 10
প্রায়োরিটি কিউ (Priority Queue)
প্রতিটি এলিমেন্টের প্রায়োরিটি থাকে, হাই প্রায়োরিটি প্রথমে বের হয়। STL-এ `priority_queue`।
উদাহরণ (Priority Queue)
#include <iostream> #include <queue> using namespace std; void printPQ(priority_queueq){ while(!q.empty()){ cout << q.top() << " "; q.pop(); } cout << endl; } int main(){ priority_queue pq; pq.push(10); pq.push(20); pq.push(30); pq.push(5); pq.push(1); cout << "PQ: "; printPQ(pq); cout << "Size: " << pq.size() << endl; cout << "Top: " << pq.top() << endl; pq.pop(); cout << "After pop: "; printPQ(pq); pq.pop(); cout << "After pop: "; printPQ(pq); return 0; }
আউটপুট
Currently que is holding: 30 20 10 5 1 Size: 5 Top: 30 After pop: 20 10 5 1 After pop: 10 5 1