एक प्रायोरिटी क्यू एक प्रकार की क्यू है जिसमें तत्वों को उन्हें असाइन की गई प्राथमिकताओं के अनुसार डाला या हटाया जाता है जहां प्राथमिकता एक पूर्णांक मान है जो 0-10 के बीच हो सकता है जहां 0 उच्चतम प्राथमिकता वाले तत्व को दर्शाता है और 10 निम्नतम प्राथमिकता वाले तत्व को दर्शाता है। प्रायोरिटी क्यू को लागू करने के लिए दो नियमों का पालन किया जाता है -
- सबसे अधिक प्राथमिकता वाले डेटा या तत्व को सबसे कम प्राथमिकता वाले डेटा या तत्व से पहले निष्पादित किया जाएगा।
- यदि दो तत्वों की प्राथमिकता समान है तो उन्हें उस क्रम में निष्पादित किया जाएगा जिस क्रम में वे सूची में जोड़े गए हैं।
प्रायोरिटी क्यू को लागू करने के लिए कई डेटा संरचनाएं उपलब्ध हैं जैसे स्टैक, क्यू और लिंक्ड लिस्ट। इस लेख में, हम क्यू डेटा संरचना की व्याख्या कर रहे हैं। प्रायोरिटी क्यू को लागू करने के दो तरीके हैं जैसे -
- एक ही सरणी में कई प्राथमिकताओं के लिए क्यू बनाए रखें
प्रायोरिटी क्यू को लागू करने का एक तरीका प्रत्येक प्राथमिकता के लिए एक क्यू बनाए रखना है। हम इन कई क्यू को एक ही सरणी में स्टोर कर सकते हैं जहां प्रत्येक क्यू के दो पॉइंटर्स होंगे यानी फ्रंट और रियर। क्यू में, फ्रंट पॉइंटर का उपयोग क्यू में तत्व डालने के लिए किया जाता है और जब भी तत्व डाला जाता है तो यह 1 से बढ़ जाता है और दूसरा पॉइंटर रियर है जिसका उपयोग क्यू से तत्व को हटाने या डिलीट करने के लिए किया जाता है जो जब भी तत्व क्यू से हटाया जाता है तो 1 से घट जाता है। अंत में, दोनों पॉइंटर्स की स्थितियों के माध्यम से हम क्यू में तत्वों की संख्या भी निर्धारित कर सकते हैं।

- इस प्रकार के प्रतिनिधित्व में, नए तत्वों को डालने के लिए जगह बनाने के लिए पॉइंटर्स को शिफ्ट करने की आवश्यकता होती है जो इसे समय और स्थान दोनों के संदर्भ में जटिल बना देगा।
- एक ही सरणी में प्रत्येक प्राथमिकता के लिए क्यू बनाए रखें
इस प्रकार की विधि में हम प्रत्येक तत्व के लिए अलग सरणी बनाते हैं। प्रत्येक क्यू को एक सर्कुलर ऐरे के रूप में लागू किया जाता है और इसमें दो पॉइंटर वेरिएबल होते हैं यानी फ्रंट और रियर। दी गई प्राथमिकता संख्या वाला तत्व संबंधित क्यू में डाला जाता है इसी तरह यदि हम क्यू से किसी तत्व को हटाना चाहते हैं तो यह उच्चतम प्राथमिकता वाली क्यू का तत्व होना चाहिए। सबसे कम प्राथमिकता पूर्णांक उच्चतम प्राथमिकता (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 + 1
End
If flag = 0
Print underflow
Else
Return value
End