प्राथमिकता कतार प्राथमिकता वाले तत्वों के संग्रह को संग्रहीत करने के लिए एक सार डेटा प्रकार है जो किसी तत्व को उनकी प्राथमिकताओं के आधार पर सम्मिलित करने और हटाने का समर्थन करता है, अर्थात, पहली प्राथमिकता वाले तत्व को किसी भी समय हटाया जा सकता है। प्राथमिकता कतार तत्वों को उनके स्थान जैसे स्टैक, कतार, सूची, आदि के संबंध में रैखिक फैशन में संग्रहीत नहीं करती है। प्राथमिकता कतार ADT (सार डेटा प्रकार) तत्वों को उनकी प्राथमिकताओं के आधार पर संग्रहीत करता है।
प्राथमिकता कतार निम्नलिखित कार्यों का समर्थन करती है -
आकार () - इसका उपयोग प्राथमिकता कतार के आकार की गणना करने के लिए किया जाता है क्योंकि यह इसमें तत्वों की संख्या लौटाता है।
खाली() - यदि प्राथमिकता कतार खाली है और गलत है तो यह सही है अन्यथा
सम्मिलित करें (तत्व) - नए तत्व को प्राथमिकता कतार में सम्मिलित करने के लिए उपयोग किया जाता है
न्यूनतम () - यह तत्व को सबसे छोटे संबद्ध कुंजी मान के साथ लौटाता है और प्राथमिकता कतार खाली होने पर त्रुटि संदेश प्रदर्शित करता है।
निकालें न्यूनतम () - यह न्यूनतम () फ़ंक्शन द्वारा संदर्भित तत्व को हटा देता है।
कार्य पहले द्वारा आदेशित C++ में जोड़े की प्राथमिकता कतार की अवधारणा को लागू करना है।
हम समस्या को ढेर के समान तरीके से हल कर सकते हैं, समस्या को हल करने के दो तरीके हैं
- अधिकतम प्राथमिकता या अधिकतम ढेर
- न्यूनतम प्राथमिकता या न्यूनतम ढेर
हीप एक वृक्ष संरचना है जिसमें नोड्स को एक विशिष्ट क्रम में व्यवस्थित किया जाता है। मिन हीप और मैक्स हीप दो प्रकार के होते हैं। मिन हीप में रूट नोड या पैरेंट नोड उसके चाइल्ड नोड से छोटा होता है, जबकि मैक्स हीप में रूट नोड या पैरेंट नोड उसके चाइल्ड नोड से बड़ा होता है।
उदाहरण
Input: priorityq.push(make_pair(18, 200)) Input: priorityq.push(make_pair(18, 200)) priorityq.push(make_pair(29, 100)) priorityq.push(make_pair(11, 400)) Output: 29 100 Input: priorityq.push(make_pair(10, 200)) priorityq.push(make_pair(20, 100)) priorityq.push(make_pair(19, 400)) Output: 20 100 Through Max priority (Max heap)
एल्गोरिदम
Start Step 1-> In main function() Define priority_queue<pair<int, int> > priorityq Call priorityq.push(make_pair(18, 200)) Call priorityq.push(make_pair(29, 100)) Call priorityq.push(make_pair(11, 400)) Set pair<int, int> top = priorityq.top() Print top.first and top.second Stop
उदाहरण
#include <bits/stdc++.h> using namespace std; // main program int main() { priority_queue<pair<int, int> > priorityq; priorityq.push(make_pair(18, 200)); priorityq.push(make_pair(29, 100)); priorityq.push(make_pair(11, 400)); pair<int, int> top = priorityq.top(); cout << top.first << " " << top.second; return 0; }
आउटपुट
29 100
न्यूनतम प्राथमिकता (न्यूनतम ढेर) के माध्यम से
एल्गोरिदम
Start Step 1-> In main function() Define priority_queue<pair<int, int> > priorityq Call pq.push(make_pair(10, 200)) Call pq.push(make_pair(20, 100)) Call pq.push(make_pair(15, 400)) Set pair<int, int> top = pq.top() Print top.first and top.second Stop
उदाहरण
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pi; // main program int main() { priority_queue<pi, vector<pi>, greater<pi> > pq; pq.push(make_pair(10, 200)); pq.push(make_pair(20, 100)); pq.push(make_pair(15, 400)); pair<int, int> top = pq.top(); cout << top.first << " " << top.second; return 0; }
आउटपुट
10 200