ट्रैक
/
Java
Java
/
अभ्यास
/
लिंक्ड लिस्ट
लिंक्ड लिस्ट

लिंक्ड लिस्ट

मध्यम

परिचय

आप एक व्यस्त रेल नेटवर्क के लिए ट्रेन शेड्यूलिंग सिस्टम बनाने की परियोजना पर काम कर रहे हैं।

आपको शेड्यूलिंग सिस्टम के ट्रेन मार्गों के लिए एक प्रोटोटाइप बनाने के लिए कहा गया है। हर मार्ग ट्रेन स्टेशनों के एक ऐसे क्रम से बना होता है जहाँ एक निश्चित ट्रेन रुकती है।

निर्देश

आपकी टीम ने तय किया है कि समय-सारणी के हर ट्रेन मार्ग को दर्शाने के लिए डबली लिंक्ड लिस्ट का उपयोग किया जाएगा। ट्रेन के मार्ग पर पड़ने वाले हर स्टेशन को लिंक्ड लिस्ट में एक नोड से दर्शाया जाएगा।

आपको स्टेशनों पर पहुँचने और रवाना होने के समय की चिंता करने की ज़रूरत नहीं है। हर स्टेशन को बस एक संख्या से दर्शाया जाएगा।

मार्गों को बढ़ाया जा सकता है, यानी मार्ग के शुरू या अंत में स्टेशन जोड़े जा सकते हैं। मार्गों को छोटा भी किया जा सकता है, यानी मार्ग के शुरू या अंत से स्टेशन हटाए जा सकते हैं।

कभी-कभी कोई स्टेशन बंद हो जाता है, और ऐसी स्थिति में उस स्टेशन को मार्ग से हटाना पड़ता है, भले ही वह मार्ग के शुरू या अंत में न हो।

किसी मार्ग का आकार इस बात से नहीं नापा जाता कि ट्रेन कितनी दूर चलती है, बल्कि इस बात से कि वह कितने स्टेशनों पर रुकती है।

Note

लिंक्ड लिस्ट कंप्यूटर विज्ञान की एक बुनियादी डेटा स्ट्रक्चर है, जिसका उपयोग अक्सर दूसरी डेटा स्ट्रक्चर बनाने में होता है। जैसा कि नाम से पता चलता है, यह उन नोड की सूची है जो आपस में जुड़े होते हैं। यह "नोड" की सूची है, जहाँ हर नोड अपने पड़ोसी या पड़ोसियों से जुड़ा होता है। एक सिंगली लिंक्ड लिस्ट में हर नोड सिर्फ अपने बाद वाले नोड से जुड़ा होता है। एक डबली लिंक्ड लिस्ट में हर नोड अपने से पहले वाले नोड के साथ-साथ बाद वाले नोड से भी जुड़ा होता है।

अगर आप लिंक्ड लिस्ट के बारे में और गहराई से जानना चाहते हैं, तो यह लेख देखिए, जिसमें अच्छे चित्रों की मदद से इसे समझाया गया है।

कार्यान्वयन

यह अभ्यास आपको जेनेरिक्स से परिचित कराता है। टेस्ट पास कराने के लिए आपको अपनी क्लास ऐसी बनानी होगी जो किसी भी तरह का इनपुट ले सके, जैसे Integer या String।

जेनेरिक्स इसलिए काम के हैं क्योंकि इनसे आप ज़्यादा सामान्य और दोबारा इस्तेमाल होने वाला कोड लिख पाते हैं। Java के List और Map कार्यान्वयन, दोनों ऐसी क्लासों के उदाहरण हैं जो जेनेरिक्स इस्तेमाल करती हैं। इनका इस्तेमाल करके आप ऐसी List बना सकते हैं जिसमें Integers हों, या ऐसी लिस्ट जिसमें Strings हों, या किसी और टाइप वाली लिस्ट।

जेनेरिक्स में इस्तेमाल होने वाले टाइपों पर कुछ सीमाएँ हैं। इनमें से एक यह है कि जब आप एक बार Integers वाली List बना लेते हैं, तो उसमें Strings नहीं डाल सकते। क्लास बनाते समय आपको बताना होता है कि आप उसमें कौन-सा टाइप डालना चाहते हैं, और फिर उस इंस्टेंस का इस्तेमाल सिर्फ उसी टाइप के साथ किया जा सकता है।

उदाहरण के लिए, आप Integers की एक लिस्ट बना सकते हैं:

List<Integer> someList = new LinkedList<>();

अब someList में सिर्फ Integers ही रह सकते हैं। आप यह भी कर सकते हैं:

List<String> someOtherList = new LinkedList<>()

अब someOtherList में सिर्फ Strings ही रह सकते हैं।

एक और सीमा यह है कि जेनेरिक्स के साथ इस्तेमाल होने वाला कोई भी टाइप प्रिमिटिव टाइप नहीं हो सकता, जैसे int या long। लेकिन हर प्रिमिटिव टाइप के लिए एक जुड़ा हुआ रेफरेंस टाइप होता है। इसलिए int की जगह आप Integer इस्तेमाल कर सकते हैं और long की जगह Long।

शुरुआत करने के लिए जेनेरिक्स के इस्तेमाल का एक उदाहरण देखना मददगार हो सकता है।


स्रोत

कंप्यूटर विज्ञान का एक क्लासिक विषय
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Java Exercism

लिंक्ड लिस्ट शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।