যেমন আমরা জানি যে কিউ ডেটা স্ট্রাকচার ফার্স্ট আউট ডেটা স্ট্রাকচারে ফার্স্ট। সারির কিছু বৈচিত্রও আছে। এগুলি হল Dequeue এবং Priority Queue৷
৷Dequeue মূলত ডবল শেষ সারি হয়. সুতরাং দুটি সামনে এবং দুটি পিছনে জোড়া আছে। সামনে এবং পিছনের পয়েন্টারের এক জোড়া বাম দিক থেকে সারি বর্ণনা করতে ব্যবহৃত হয়, এবং অন্যটি ডান দিক থেকে বর্ণনা করতে ব্যবহৃত হয়। আমরা এই কাঠামোর উভয় দিক থেকে উপাদান সন্নিবেশ বা মুছে দিতে পারি। এখানে আমরা কিছু C++ কোড দেখতে পাব যার কার্যকারিতা বোঝার জন্য dequeue STL ব্যবহার করে।
উদাহরণ (ডিকিউ)
#include <iostream> #include <deque> using namespace std; void dequeElements(deque <int> que) { deque <int> :: iterator it; for (it = que.begin(); it != que.end(); ++it) cout << *it << " "; cout <<endl; } int main() { deque <int> que; que.push_back(10); que.push_front(20); que.push_back(30); que.push_front(15); cout << "Currently que is holding : "; dequeElements(que); cout <<"Size of dequeue : " <<que.size() << endl; cout << "Element at position 2 : " << que.at(2) << endl; cout << "Element at front position : " << que.front() << endl; cout << "Element at back position : " << que.back() << endl; cout << "Delete from front side : "; que.pop_front(); dequeElements(que); cout << "Delete from back side : "; que.pop_back(); dequeElements(que); }
আউটপুট
Currently que is holding : 15 20 10 30 Size of dequeue : 4 Element at position 2 : 10 Element at front position : 15 Element at back position : 30 Delete from front side : 20 10 30 Delete from back side : 20 10
সারির আরেকটি ভিন্নতা হল অগ্রাধিকার সারি। এই কাঠামোতে, সারিতে থাকা প্রতিটি উপাদানের নিজস্ব অগ্রাধিকার রয়েছে। যখন আমরা সারিতে আইটেম সন্নিবেশ করি, তখন আমাদের এটির সাথে অগ্রাধিকার মান নির্ধারণ করতে হবে। এটি প্রথমে সর্বোচ্চ অগ্রাধিকার উপাদান মুছে ফেলবে। অগ্রাধিকার সারি বাস্তবায়নের জন্য সবচেয়ে সহজ পদ্ধতি হল হিপ ডেটা স্ট্রাকচার ব্যবহার করা।
অগ্রাধিকার সারির STL-এর জন্য একটি C++ কোড দেখা যাক। এখানে মানের উপর ভিত্তি করে অগ্রাধিকার নির্ধারণ করা হয়। তাই উচ্চতর মান সর্বোচ্চ অগ্রাধিকার উপাদান হিসাবে বিবেচিত হবে।
উদাহরণ (অগ্রাধিকার সারি)
#include <iostream> #include <queue> using namespace std; void dequeElements(priority_queue <int> que) { priority_queue <int> q = que; while(!q.empty()){ cout << q.top() << " "; q.pop(); } cout << endl; } int main() { priority_queue <int> que; que.push(10); que.push(20); que.push(30); que.push(5); que.push(1); cout << "Currently que is holding : "; dequeElements(que); cout << "Size of queue : " <<que.size() << endl; cout << "Element at top position : " << que.top() << endl; cout << "Delete from queue : "; que.pop(); dequeElements(que); cout << "Delete from queue : "; que.pop(); dequeElements(que); }
আউটপুট
Currently que is holding : 30 20 10 5 1 Size of queue : 5 Element at top position : 30 Delete from queue : 20 10 5 1 Delete from queue : 10 5 1