क्यू और स्टैक काफी सरल डेटा संरचनाएं हैं जिनका उपयोग हम अपने दैनिक कोडिंग में करते हैं। वास्तव में, उन्हें डेटा बनाए रखने के लिए सबसे आसान संरचनाओं के रूप में सोचा जा सकता है।
पूरे लेख में, मैं डेटा संरचना को संदर्भित करने के लिए DS का उपयोग करूंगा।
क्यू एक डीएस है जो फीफो सिद्धांत पर काम करता है। जो डेटा पहले आता है उसे पहले बाहर जाने की अनुमति होती है। कतारें लागू करने के कई तरीके हैं। हम ऐरे, लिंक्ड सूची और कई अन्य का उपयोग करने के लिए स्वतंत्र हैं। लेकिन यहां, मैं स्टैक नामक एक अन्य डीएस का उपयोग करके कतार के कार्यान्वयन पर चर्चा करने वाला हूं।
अब, हम सभी जानते हैं, स्टैक एक डीएस है जो LIFO सिद्धांत पर काम करता है। मैं हमेशा किताबों को एक के ऊपर एक रखने के बारे में सोचता हूं, इसलिए यदि यह आपको कल्पना करने में मदद करता है तो बेझिझक उस सादृश्य का उपयोग करें।
मुझे यह प्रश्न हैकररैंक में मिला जहां उन्होंने हमें 2 स्टैक्स का उपयोग करके क्यू को लागू करने के लिए कहा। सरल लगता है ना? एक क्षण रुककर सोचें कि हम इसे कैसे हासिल कर पाएंगे।
हो सकता है कि आप कुछ समाधान लेकर आए हों क्योंकि ऐसा करने के कई तरीके हैं। तो आप इसे सीधे क्यों नहीं आज़माते?
सवाल
अब, उन लोगों के लिए जिन्होंने प्रयास किया और उन्हें "टाइम-आउट त्रुटि" मिली और उन लोगों के लिए जिन्होंने प्रयास करने की जहमत नहीं उठाई, आइए मैं आपको इस समस्या का सबसे सरल और आसान समाधान समझाता हूं।
पहले देखें कि स्टैक को कैसे लागू किया जा सकता है।
जैसा कि आप देख सकते हैं, मैंने एक सूची का उपयोग करके स्टैक लागू किया है। प्रारंभ में कंस्ट्रक्टर एक खाली सूची प्रारंभ करता है। हम डेटा को सूची के अंत में जोड़कर आगे बढ़ाते हैं। पॉपिंग करते समय, यदि हम कोई इंडेक्स प्रदान नहीं करते हैं तो यह सूची के अंत से पॉप हो जाता है। इस प्रकार, डाला जाने वाला अंतिम तत्व पॉप आउट होने वाला पहला तत्व होता है।
अब, कतार के समान तरीके से हमने दो अलग-अलग स्टैक आरंभ किए हैं। एक एनक्यू के लिए और एक डीक्यू के लिए।
हम केवल सूची के अंत में डेटा पुश करने के लिए स्टैक के समान एनक्यूस्टैक का उपयोग करते हैं। लेकिन डिक्यूस्टैक के लिए, हम जानते हैं कि स्टैक का पॉप फ़ंक्शन अंतिम से तत्व को हटा देता है इसलिए हम क्या करते हैं; हम एनक्यूस्टैक को उल्टा करते हैं और इसे डीक्यूस्टैक में डालते हैं। इस प्रकार, एनक्यूस्टैक का पहला तत्व डीक्यूस्टैक का अंतिम तत्व बन जाता है, एनक्यूस्टैक का दूसरा तत्व डीक्यूस्टैक का दूसरा अंतिम तत्व बन जाता है और इसी तरह। तो अब यदि हम dequeueStack के लिए पॉप फ़ंक्शन का उपयोग करते हैं तो यह हमारे द्वारा पुश किए गए पहले तत्व को हटा देगा, इस प्रकार, कतार की नकल करेगा।
अगर यह अभी भ्रमित करने वाला लगता है तो चिंता न करें! एक बार जब आप कोड देखेंगे तो आपको एहसास होगा कि मैं किस बारे में बात कर रहा हूं। वास्तव में अभी इस पर एक नज़र डालें!
आपको आश्चर्य हो सकता है कि वे अतिरिक्त जाँचें किस लिए हैं। जैसे यह जांचना कि डिक्यूस्टैक खाली है या नहीं। यदि हम प्रारंभ में इसकी जाँच नहीं करते हैं। रिवर्सल द्वारा एन्क्यूस्टैक के तत्व डिक्यूस्टैक में बैठ जाएंगे और क्या होता है कि डिक्यू स्टैक तत्व जो पहले होना चाहिए था वह अब अंतिम हो गया है। इसलिए पहले dequeueStack को खाली करना होगा जैसा कि कोड में दिखाया गया है।
इसके समान, प्रिंटफ्रंट उस आइटम को प्रिंट करता है जिसे कतार में सबसे आगे होना चाहिए।
इस कार्यान्वयन के बाद, हम STDIN से इनपुट पढ़ते हैं और आउटपुट को STDOUT पर प्रिंट करते हैं।
हमारा इनपुट कुछ इस तरह है:
और पूर्ण मुख्य कार्य है:
मैंने इसे यथासंभव आसान तरीके से लागू करने का प्रयास किया है। इसे लागू करने के कई अन्य और बेहतर तरीके हो सकते हैं। उनमें से एक यहाँ प्रस्तुत है!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3