কম্পিউটার

C++ এ অগ্রাধিকার সারি


আমরা জানি যে কিউ ডাটা স্ট্রাকচার ফার্স্ট ইন ফার্স্ট আউট ডাটা স্ট্রাকচার। সারির কিছু বৈচিত্রও আছে। এগুলি হল 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

  1. C/C++ এ অগ্রাধিকার সারির ভূমিকা

  2. C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরিতে (STL) অগ্রাধিকার সারি

  3. C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকা ব্যবহার করে অগ্রাধিকার সারি

  4. বার্তা সারি ব্যবহার করে আইপিসি