কম্পিউটার

C++ এ জোড়ার অগ্রাধিকার সারি (প্রথম দ্বারা ক্রমানুযায়ী)


অগ্রাধিকার সারি হল অগ্রাধিকারপ্রাপ্ত উপাদানগুলির একটি সংগ্রহ সংরক্ষণ করার জন্য একটি বিমূর্ত ডেটা টাইপ যা তাদের অগ্রাধিকারের উপর ভিত্তি করে একটি উপাদান সন্নিবেশ এবং মুছে ফেলাকে সমর্থন করে, অর্থাৎ, প্রথম অগ্রাধিকার সহ উপাদানটি যে কোনো সময় সরানো যেতে পারে। অগ্রাধিকার সারিতে উপাদানগুলিকে রৈখিক ফ্যাশনে সঞ্চয় করে না তাদের অবস্থানের ক্ষেত্রে যেমন স্ট্যাক, সারি, তালিকা, ইত্যাদি। অগ্রাধিকার সারি ADT (বিমূর্ত ডেটা টাইপ) তাদের অগ্রাধিকারের উপর ভিত্তি করে উপাদানগুলি সঞ্চয় করে।

অগ্রাধিকার সারি নিম্নলিখিত ফাংশন সমর্থন করে −

আকার() − এটি অগ্রাধিকার সারির আকার গণনা করতে ব্যবহৃত হয় কারণ এটি এতে উপাদানের সংখ্যা প্রদান করে।

খালি() − যদি অগ্রাধিকার সারি খালি থাকে এবং অন্যথায় মিথ্যা হয় তাহলে এটি সত্য হয়

সন্নিবেশ (উপাদান) - একটি অগ্রাধিকার সারিতে নতুন উপাদান সন্নিবেশ করতে ব্যবহৃত হয়

মিন() − এটি ক্ষুদ্রতম সংশ্লিষ্ট কী মান সহ উপাদানটি ফেরত দেয় এবং অগ্রাধিকার সারি খালি থাকলে ত্রুটি বার্তা প্রদর্শন করে৷

রিমুভমিন() − এটি min() ফাংশন দ্বারা উল্লেখ করা উপাদানটিকে সরিয়ে দেয়।

কাজটি হল C++ এ জোড়ার অগ্রাধিকার সারির ধারণাটি প্রথম দ্বারা আদেশ করা।

আমরা একই ধরনের স্তূপ দিয়ে সমস্যার সমাধান করতে পারি, সমস্যা সমাধানের দুটি উপায় আছে

  • সর্বোচ্চ অগ্রাধিকার বা সর্বোচ্চ হিপ
  • সর্বনিম্ন অগ্রাধিকার বা সর্বনিম্ন হিপ

হিপ হল একটি গাছের কাঠামো যেখানে নোডগুলি একটি নির্দিষ্ট ক্রমে সাজানো হয়। দুই ধরনের স্তূপ আছে মিন হিপ এবং ম্যাক্স হিপ। মিন হিপে রুট নোড বা প্যারেন্ট নোড তার চাইল্ড নোড থেকে ছোট, যেখানে ম্যাক্স হিপে রুট নোড বা প্যারেন্ট নোড তার চাইল্ড নোড থেকে বড়৷

উদাহরণ

ইনপুট:priorityq.push(make_pair(18, 200))ইনপুট:priorityq.push(make_pair(18, 200))priorityq.push(make_pair(29, 100))priorityq.push(make_pair(04, 04) )আউটপুট:29 100ইনপুট:priorityq.push(make_pair(10, 200))priorityq.push(make_pair(20, 100))priorityq.push(make_pair(19, 400))আউটপুট:20 ঘন্টা বা সর্বোচ্চ 100 টি /প্রে> 

অ্যালগরিদম

StartStep 1-> প্রধান ফাংশনে() priority_queue সংজ্ঞায়িত করুন> priorityq কল করুন priorityq.push(make_pair(18, 200)) priorityq.push(make_pair(29, 100)) q কল করুন। push(make_pair(11, 400)) জোড়া সেট করুন top =priorityq.top() প্রিন্ট top.first এবং top.secondStop

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;// main programint main() { priority_queue> priorityq; priorityq.push(make_pair(18, 200)); priorityq.push(make_pair(29, 100)); priorityq.push(make_pair(11, 400)); pair top =priorityq.top(); cout < 

আউটপুট

29 100

সর্বনিম্ন অগ্রাধিকারের মাধ্যমে (মিনিট হিপ)

অ্যালগরিদম

StartStep 1-> প্রধান ফাংশনে() priority_queue > priorityq কল করুন pq.push(make_pair(10, 200)) কল pq.push(make_pair(20, 100)) কল pq. push(make_pair(15, 400)) জোড়া সেট করুন top =pq.top() প্রিন্ট top.first এবং top.secondStop

উদাহরণ

#include  namespace ব্যবহার করে std;typedef pair pi;// main programint main() { priority_queue, greater> pq; pq.push(make_pair(10, 200)); pq.push(make_pair(20, 100)); pq.push(make_pair(15, 400)); pair top =pq.top(); cout < 

আউটপুট

10 200

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

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

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

  4. অগ্রাধিকার সারি বাস্তবায়নের জন্য C++ প্রোগ্রাম