আমরা জানি যে কিউ ডাটা স্ট্রাকচার ফার্স্ট ইন ফার্স্ট আউট ডাটা স্ট্রাকচার। সারির কিছু বৈচিত্রও আছে। এগুলি হল Dequeue এবং Priority Queue৷
৷এখানে আমরা সারির একটি ভিন্নতা দেখতে পাব, সেটি হল অগ্রাধিকার সারি। এই কাঠামোতে, সারিতে থাকা প্রতিটি উপাদানের নিজস্ব অগ্রাধিকার রয়েছে। যখন আমরা সারিতে আইটেম সন্নিবেশ করি, তখন আমাদের এটির সাথে অগ্রাধিকার মান নির্ধারণ করতে হবে। এটি প্রথমে সর্বোচ্চ অগ্রাধিকার উপাদান মুছে ফেলবে। অগ্রাধিকার সারি বাস্তবায়নের জন্য সবচেয়ে সহজ পদ্ধতি হল হিপ ডেটা স্ট্রাকচার ব্যবহার করা।
অগ্রাধিকার সারির STL-এর জন্য একটি C++ কোড দেখা যাক। এখানে মানের উপর ভিত্তি করে অগ্রাধিকার নির্ধারণ করা হয়। তাই উচ্চতর মান সর্বোচ্চ অগ্রাধিকার উপাদান হিসাবে বিবেচিত হবে।
অ্যালগরিদম
insert(key, priority): Begin insert key at the end of the heap heapify the array based on the priority End delete(): Begin item := root element root := last element from array heapify the array to arrange based on priority return item End
উদাহরণ
#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