একটি অগ্রাধিকার সারি হল এক ধরনের সারি যেখানে উপাদানগুলিকে তাদের নির্ধারিত অগ্রাধিকার অনুযায়ী সন্নিবেশিত বা মুছে ফেলা হয় যেখানে অগ্রাধিকার একটি পূর্ণসংখ্যার মান যা 0-10 এর মধ্যে হতে পারে যেখানে 0 সর্বোচ্চ অগ্রাধিকার সহ উপাদানটি দেখায় এবং 10টি উপাদানটিকে দেখায় সর্বনিম্ন অগ্রাধিকার। অগ্রাধিকার সারি −
বাস্তবায়নের জন্য দুটি নিয়ম অনুসরণ করা হয়- সর্বোচ্চ অগ্রাধিকার সহ ডেটা বা উপাদান সর্বনিম্ন অগ্রাধিকার সহ ডেটা বা উপাদানের আগে কার্যকর করা হবে৷
- যদি দুটি উপাদানের একই অগ্রাধিকার থাকে তবে সেগুলি তালিকায় যোগ করা ক্রম অনুসারে কার্যকর করা হবে৷
একাধিক ডেটা স্ট্রাকচার উপলব্ধ রয়েছে যা স্ট্যাক, সারি এবং লিঙ্কযুক্ত তালিকার মতো অগ্রাধিকার সারি বাস্তবায়ন করতে ব্যবহার করা যেতে পারে। এই নিবন্ধে, আমরা সারি ডেটা কাঠামো ব্যাখ্যা করছি। −
এর মত অগ্রাধিকার সারি বাস্তবায়নের জন্য দুটি উপায় ব্যবহার করা যেতে পারে- একক অ্যারেতে একাধিক অগ্রাধিকারের জন্য সারি বজায় রাখুন
অগ্রাধিকার সারি বাস্তবায়নের একটি উপায় হল প্রতিটি অগ্রাধিকারের জন্য একটি সারি বজায় রাখা। আমরা এই একাধিক সারিগুলিকে একটি একক অ্যারেতে সংরক্ষণ করতে পারি যেখানে প্রতিটি সারিতে দুটি পয়েন্টার থাকবে যেমন সামনে এবং পিছনে। সারিতে, একটি সারিতে উপাদান সন্নিবেশ করার জন্য সামনের পয়েন্টার ব্যবহার করা হয় এবং যখনই উপাদানটি সন্নিবেশ করা হয় তখন এটি 1 দ্বারা বৃদ্ধি পায় এবং অন্য একটি পয়েন্টার পিছনে থাকে যা সারিতে থেকে উপাদানটি মুছে ফেলতে বা সরাতে ব্যবহৃত হয় যা যখনই উপাদানটি 1 দ্বারা হ্রাস পায়। সারি থেকে সরানো হয়। শেষ পর্যন্ত, দুটি পয়েন্টারের অবস্থানের মাধ্যমে আমরা সারিতে থাকা উপাদানের সংখ্যাও নির্ধারণ করতে পারি।
- এই ধরনের উপস্থাপনায়, নতুন উপাদান সন্নিবেশ করার জন্য আমাদের পয়েন্টারগুলিকে স্থানান্তর করতে হবে যা সময় এবং স্থান উভয় ক্ষেত্রেই এটিকে জটিল করে তুলবে৷
- একক অ্যারেতে প্রতিটি অগ্রাধিকারের জন্য সারি বজায় রাখুন
এই ধরনের পদ্ধতিতে আমরা প্রতিটি উপাদানের জন্য পৃথক তীর তৈরি করি। প্রতিটি সারি একটি বৃত্তাকার অ্যারে হিসাবে প্রয়োগ করা হয় এবং দুটি পয়েন্টার ভেরিয়েবল থাকে .i.e. সামনে এবং পিছন. অগ্রাধিকার নম্বর সহ উপাদানটি সংশ্লিষ্ট সারিতে ঢোকানো হয় একইভাবে যদি আমরা সারি থেকে একটি উপাদান মুছতে চাই তবে এটি অবশ্যই সর্বোচ্চ অগ্রাধিকারের সারির উপাদান হতে হবে। সর্বনিম্ন অগ্রাধিকার পূর্ণসংখ্যা সর্বোচ্চ অগ্রাধিকার নির্দেশ করে(0)।
দ্রষ্টব্য - যদি প্রতিটি সারির আকার একই হয় তবে আমরা একাধিক এক-মাত্রিক অ্যারে তৈরি করার পরিবর্তে একটি একক দ্বিমাত্রিক অ্যারে তৈরি করতে পারি।
অগ্রাধিকার সারিতে ইনসার্ট অপারেশনের জন্য অ্যালগরিদম
insert(queue, data, priority) If(queue->Rear[priority] = MAX-1 AND queue->Front[priority] = 0) OR (queue->Rear[priority] +1 =queue->Front[priority]) Print Overflow End IF queue->Rear[priority - 1] = MAX-1 Set queue->Rear[priority - 1] = 0 Else Set queue->Rear[priority] = queue->Rear[priority - 1] +1 End Set queue->CQueue[priority - 1] [queue->Rear[priority - 1] = data IF queue->Front[priority - 1] = -1 Set queue->Front[priority - 1] = 0 End
অগ্রাধিকার সারিতে ইনসার্ট অপারেশনের জন্য অ্যালগরিদম
delete(queue) Set flag = 0, priority = 0 While priority <= MAX-1 IF NOT queue->Front[priority] = -1 Set flag = 1 Set value = queue->CQueue[priority][queue->Front[priority]] IF queue->Front[priority] = queue->Rear[priority] Set queue->Front[priority] = queue->Rear[priority] = -1 Else IF queue->Front[priority] = MAX-1 Set queue->Front[priority] = 0 Else Set queue->Front[priority] = queue->Front[priority] + 1 End End Break End Set priority = priority + End If flag = 0 Print underflow Else Return value End