कतारों और प्राथमिकता वाली कतारों को समझने के लिए एक शुरुआती मार्गदर्शिका

एक प्रोग्रामर के रूप में, आप अपनी परियोजनाओं के दायरे के आधार पर विभिन्न डेटा संरचनाओं के साथ काम करेंगे। ऐसी ही एक अवधारणा एक कतार डेटा संरचना है; कतारें छात्रों के लिए आवश्यक हैं और कई महत्वपूर्ण एल्गोरिदम में उपयोग की जाती हैं। कतारों की तरह, प्राथमिकता वाली कतारें एक समान अवधारणा साझा करती हैं, लेकिन उनमें कुछ मूलभूत अंतर होते हैं।

कतारों और प्राथमिकता कतारों को समझने के लिए आगे पढ़ें।

एक कतार क्या है?

एक कतार एक साधारण डेटा संरचना है जिसमें वास्तविक जीवन की कोडिंग परियोजनाओं में विभिन्न प्रकार के अनुप्रयोग होते हैं। डेटा संरचनाएं स्वाभाविक रूप से अमूर्त हैं, लेकिन सादगी के लिए, हम कल्पना करते हैं कि एक कतार डेटा संरचना में दो अलग-अलग छोरों के साथ एक रैखिक आकार होता है।

समय जटिलता के संदर्भ में, एक कतार ओ (1) समय में सम्मिलन (एनक्यू) और विलोपन (डीक्यू) की अनुमति देती है। इसकी स्पर्शोन्मुख दक्षता के कारण, कतारें बड़े डेटासेट के लिए कुशल होती हैं। क्यू प्रकृति में फर्स्ट-इन-फर्स्ट-आउट (फीफो) हैं, जिसका अर्थ है कि पहले डाला गया डेटा आइटम पहले एक्सेस किया जाएगा। इसके विपरीत, स्टैक में लास्ट-इन-फर्स्ट-आउट (LIFO) प्रकृति होती है और इसका केवल एक खुला अंत होता है।

एक सिनेमाघर में टिकट की कतार की कल्पना करें; आने वाला प्रत्येक नया ग्राहक एक छोर पर कतार में शामिल हो जाता है। एक-एक करके, प्रत्येक ग्राहक टिकट खरीदता है और सामने के छोर से कतार छोड़ देता है। कतार डेटा संरचना किसी भी वास्तविक दुनिया की कतार की तरह काम करती है, और एक छोर पर डेटा डाला जाता है (एनक्यू) और दूसरे छोर पर हटा दिया जाता है। अब आप उम्मीद से समझ सकते हैं कि कतारें FIFO पद्धति का पालन क्यों करती हैं।

एक कतार में बहुत सारे वास्तविक जीवन के कोडिंग अनुप्रयोग होते हैं। यह आमतौर पर उन अनुप्रयोगों में उपयोग किया जाता है जहां डेटा को तुरंत संसाधित करने की आवश्यकता नहीं होती है, बल्कि FIFO क्रम में होती है। डिस्क शेड्यूलिंग, एसिंक्रोनस डेटा ट्रांसफर, सेमाफोर कुछ विशिष्ट अनुप्रयोग हैं। पहले आओ-पहले पाओ शेड्यूलिंग कार्य जैसे प्रिंट स्पूलिंग या इनपुट डिवाइस बफ़र्स भी एक क्यू का उपयोग करते हैं।

प्राथमिकता कतार क्या है?

एक प्राथमिकता कतार एक कतार के समान होती है, लेकिन इसमें अतिरिक्त गुण होते हैं। जब किसी डेटा तत्व को प्राथमिकता कतार में लगाया जाता है, तो उसे प्राथमिकता संख्या दी जाती है। एक मानक कतार के डीक्यूइंग के विपरीत, उच्च प्राथमिकता वाले डेटा तत्वों को कम प्राथमिकता वाले डेटा तत्वों से पहले हटा दिया जाता है। प्राथमिकता प्राथमिकता कतार में आगमन के क्रम को अधिक्रमण करती है, यही कारण है कि प्राथमिकता कतारों में एक सुसंगत फीफो प्रकृति नहीं होती है।

संबंधित: एल्गोरिदम हर प्रोग्रामर को पता होना चाहिए

प्रोग्रामर कई तरह से प्राथमिकता कतार लागू कर सकते हैं। एक सीधा कार्यान्वयन एक संरचना/वर्ग डेटा आइटम के साथ एक सरणी का उपयोग करना है, और डेटा आइटम में प्रत्येक डेटा तत्व और डेटा की प्राथमिकता होगी। एक अन्य प्राथमिक प्राथमिकता कतार कार्यान्वयन एक लिंक्ड सूची का उपयोग करना है। लिंक्ड सूचियों के माध्यम से लागू की गई प्राथमिकता कतारें कार्यात्मक हैं लेकिन उनके प्रदर्शन के कारण आदर्श नहीं हैं।

आप ढेर के साथ बेहतर प्राथमिकता कतार लागू कर सकते हैं। यदि आपको याद हो, बाइनरी हीप्स 0(1) समय में अधिकतम या न्यूनतम तत्व देते हैं, और सम्मिलन में केवल 0(logN) समय लगता है। ढेर की मदद से, प्राथमिकता कतारें कतारों या सरणियों की तुलना में बेहतर प्रदर्शन देती हैं।

प्राथमिकता कतार में विभिन्न प्रकार के आवश्यक अनुप्रयोग भी होते हैं। प्राइम के न्यूनतम स्पैनिंग ट्री और डिजस्ट्रा के सबसे छोटे पथ एल्गोरिदम जैसे ग्राफ एल्गोरिदम में प्राथमिकता कतार महत्वपूर्ण हैं। वे कंप्यूटर प्रोसेसिंग यूनिट (सीपीयू) प्रक्रिया शेड्यूलिंग एल्गोरिदम में भी आदर्श हैं।

डेटा संरचनाएं सीखें

कतार और प्राथमिकता कतार सभी शुरुआती लोगों के लिए महत्वपूर्ण डेटा संरचनाएं हैं। यह महत्वपूर्ण है कि छात्र इन डेटा संरचनाओं को लागू करने और विभिन्न परियोजनाओं में उनका उपयोग करने में सहज हों।

अन्य डेटा संरचनाएं जैसे ढेर, ढेर और पेड़ छात्रों और पेशेवरों के लिए समान रूप से महत्वपूर्ण हैं। साक्षात्कारकर्ताओं के लिए डेटा संरचनाओं पर आवेदकों से सवाल करना भी बहुत आम है।

इस लेख को पढ़ने के बाद, अब आपको इस बात का अच्छा अंदाजा हो गया होगा कि क्यू और प्राथमिकता क्यू कैसे काम करते हैं। यदि सब कुछ अभी भी थोड़ा अस्पष्ट लगता है, तो आप इनका उपयोग करने में अधिक अनुभव प्राप्त करने के साथ इन्हें पकड़ लेंगे।