Transcript for:
लिंक लिस्ट की विस्तृत जानकारी

कि आई वेलकम टू अपना कॉलेज आज की वीडियो में हम पढ़ने वाले हैं लिंक लिस्ट के बारे में अब यह जो जावा की बारी सीरीज चल रही है इसमें हम बेसिक टॉपिक्स कर चुके लास्ट क्लास में कलेक्शन फ्रेमवर्क पढ अब एक छोड़ी सी चीज है कि रिकर्जन पढ़ने के बाद यूजुली वैक्ट ट्रैकिंग पढ़ा करते हैं और उससे रिलेटेड एक दो सॉर्टिंग अलगोरिदम्स होते हैं। साथ के साथ हमारा बाइनरी सर्च का कॉनसेप्ट होता है तो यह तीन जो टॉपिक हैं यह हम लिंक लिस्ट खत्म करने के बाद पढ़ेंगे ताकि हम बाइनरी सर्च जब कर रहे हो तो हम लिंक लिस्ट से रिलेटेड एडवांस्ट क्वेश्चंस भी साथ के साथ कर सकें और ह इतने एडवांस डेटा स्ट्रक्चर से तो क्लास की शुरुआत करते हैं पॉजिटिविटी के साथ सर्दिया आ गई है मम्मी ने जबरदस्ती स्वेटर पहना दिया है तो आई होप कि आप भी अपनी हेल्थ का ख्याल रख रहे होंगे गूगल की एक है तो आई होप कि आप जो अपनी कोडिंग जर्नी लेकर चल रहे हैं कोडिंग सीख रहे हैं उसको काफी अच्छे से लें उस प्राक्टिस काफी अच्छे से करें था कि कॉनसेप्स को हम बहुत अच्छे से सीख पाएं धीरे-धीरे हम करेंगे चीजें तो प्राक्टिस के साथ जिसका इंटरेस्ट नहीं है उसका भी थोड़ा बहुत इंटरेस्ट बनना शुरू हो जाता है जिसको रहें अब लिंक लिस्ट की बात करें तो लिंक लिस्ट एक वन अब जो मोस्ट इंपोर्टेंट डाटा स्ट्रक्चर है लिंक लिस्ट का मतलब है एक लिस्ट है एलिमेंट्स की नोड्स की और वह लिंग है कि जैसे फॉर एग्जांपल हमने यह आपको एक फिगर दिखाया हुआ है यह लिंग लिस्ट का ही एक एग्जांपल है यहां पर कुछ-कुछ एलेमेंट है हमारे जो कनेक्टेड है यानि लिंग है एक दूसरे से और वह ओवर ऑल एक स्ट्रक्चर पर कर रहे हैं ऐसे से दिखने वाले स्ट्रक्चर को हम जिस तरीके से विजुअलाइज कर रहे हैं यहां पर इसको हम लिंक लिस्ट का नाम देते हैं अब समझते हैं डीटेल में कि लिंक लिस्ट क्या होता है मेमोरी में किस तरीके से काम करता है उसके डिफरेंट ऑपरेशन एक छोटी सी इंपोर्टेंट चीज नीचे होंगे साथ के साथ ऐसे स्टूडेंट जिनको लिंक लिस्ट का कॉन्सेप्ट पहले से पता है बेसिक कॉन्सेप्ट जिन्होंने 11-12 में पढ़ लिया था यह अपने फर्स्ट सेकंड यह में या कभी भी पढ़ लिया था और बेसिक पता है वह डायरेक्टली किसके कर स कर रहे होंगे नीचे आपको टाइम स्टैंप मिल जाएगा जो स्टूडेंट पहली बार लिंक लिस्ट के बारे में पढ़ रहे हैं उनको शुरुआत से जो स्क्राच वाला पार्ट जो मोस्ट इंपोर्टेंट पार्ट है बिगनर्स के लिए वह जो कबर करने वाले हैं इसको देखने की जरूरत है अब शुरुआत में लिंक लिस्ट को कंपेयर करेंगे हम एरेलिस्ट से एरेलिस्ट को एरेलिस्ट को हम ऑलरेडी पढ़ चुके हैं एरेलिस्ट की अगर बात करें तो एरेलिस्ट क्या होता था एरेलिस्ट एक एरे जैसा ही अंदर कुछ स्टूडेंट नीचे कॉमेंट किया था कि आप बता दीजिए इंटरनल इंप्लीमेंटेशन किस तरीके से होती है तो इस क्लास में हम वह छोटा सा पार्ट है कवर कर रहे होंगे साथ के साथ कंप्यॉरेजन कर रहे होंगे तो एरेलिस्ट मेमोरी के अंदर इंप्लीमेंट होता है डाइनेमिक एरे की हेल्प से अब डाइनेमिक एरे में एरेलिस्ट के अंदर एलेमेंट कुछ इस अरीके से स्टोर होते हैं अ है और जैसे ही डाइनमिक एरे जितना भी अलॉटेड होता है रेलिस्ट को वह भर जाता है तो हम एक नया डाइनमिक एरे लॉट कर देते हैं मान लीजिए सारे एलेमेंट भर गए अब हमें कुछ इंसर्ट करना है तो एक बड़े साइस का डाइनमिक एरे लॉट करें तरह एलेमेंट्स को हम कॉपी करेंगे तो कॉपी कर देंगे यहां पर लिख देंगे वन यहां पर थ्री यहां पर फोर यहां पर फाइव और सेक्स सेवन मान लेते हैं लास्ट एलेमेंट्स में आड़ हुए थे और यहां पर ऐड कर देंगे अपना नया वाला हुआ मान लीजिए हमें यहां पर इंसर्ट करना है टू अ है तो इस केस में क्या करेंगे इन सारे के सारे एलेमेंट्स को हमें उठाकर पीछे कॉपी करना पड़ेगा ताकि बीच में एक जगह बच जाए तो हम क्या करेंगे वन को यहां रखेंगे यहां पर टू आ जाएगा हमारा नया एलेमेंट और 345 56 इस तरीके से सारे के सारे एलिमेंट्स को हमें उठाकर पीछे कॉपी करना पड़ेगा या फिर अगर हमारी स्पेस भर गई है तो एक नए एरे लिस्ट में कॉपी करना पड़ेगा इस तरीके से अगर हम टाइम कंप्लेक्सिटी का जो फंडा है वह अप्लाई करें तो यहां देख पाएंगे कि जब भी बीच में यानि मिडल में हमें इनसर्ट ऑपरेशन परफॉर्म करना होता है तो उस टाइम पर टाइम कंप्लेक्सिटी बन जाती है बिग ओफ एन बिग ओफ एन क्यों क्योंकि हमें एन एलिमेंट्स को एक एक करके उठाकर पीछे की तरफ प करना पड़ा बीच वाले एलिमेंट की जगह बनाने के लि है तो इस तरीके से इनसर्ट की जो टाइम कंप्लेक्सिटी होती है एरेलिस्ट में वह होती है बिग ऑफ एन और सर्च की जो टाइम कंप्लेक्सिटी होती है यानि किसी भी एलेमेंट को अगर हम सर्च करना है तो आप बोलेंगे दी हम एरेलिस्ट डायरेक्टली इंडेक्स से लेकर हम एलेमेंट निकाल लेते हैं यानि अगर हमारे एरेलिस्ट का नाम ए आरार हुआ तो हम जिरूप इंडेक्स वाला एलेमेंट कुछ इस तरीके से अ एरे वाले तरीके से ही निकाल लेंगे अब इस तरीके से निकालने के time complexity जो होगी वो होगी big of 1 क्योंकि हमने एक ही operation में अपने element को निकाल लिया इसलिए array list के अंदर search की time complexity होती है big of और दूसरा link list के अंदर memory जो allocated होती है वो होती है non-contiguous, non-contiguous यानि memory के different different parts को जोड़ कर हमारा link list बनता है, जैसे अगर memory में, में हम heap memory को consider करें तो एक party ये हो गया एक party ये हो गया इसमें हमने store करवा लिया one को ये point करेगा अगले वाले को इसमें store करवा लिया two ये point करेगा इधर इसमें store करवा लिया three और ये point करेगा किसी को भी नहीं तो null को तो कुछ इस तरीके का structure होता है हमारी link list जिसमें क्या होता है हम different different data को एक दूसरे से link करते हैं तो ये जो one वाला data है यह लिंक है हमारे अगले डेटा यानि 2 से, 2 लिंक है अगले डेटा यानि हमारे 3 से, और 3 के बाद कोई भी डेटा नहीं है इसलिए कह सकते हैं कि वो null से लिंक है, जावा के अंदर null होता है, एमप्टी खाली तो कुछ इस तरीके का स्ट्रक्चर होगा लिंक लिस्ट अब लिंक लिस्ट के अंदर इंसर्ट और सर्च को एक बार करके देखते हैं मान लीजिए हमारे पास एक डाटा स्ट्रक्चर है जिसमें पहला नोड है वन उसके बाद है थ्री उसके बाद है फोर उसके बाद है नल तो अब हमें यहां पर इंसर्ट करना है टू तो टू को हमें यहां पर इंसर्ट करना होगा तो सबसे पहले टू का एक नया नोड बनाएंगे उसके बाद क्या करेंगे अपना इन जो वन नोड है उसे पॉइंट करवा देंगे टू की तरफ टू को पॉइंट करवा देंगे थ्री की तरफ और यह जो बीच वाला कनेक्शन है इसको काट देंगे तो कुछ इस तरीके से बीच वाले कनेक्शन को कंप्लीटली हटा दिया और हमने वन से टू तक कनेक्शन बना दिया टू से थ्री तक कनेक्शन बना दिया तो टू हमारे इस पूरे के पूरे लिंक लिस्ट का पार्ट बन गया तो इस तरीके से इंसर्शन होता है अब इस इंसर्शन को ध्यान से देखिए तो मैं कितने ऑपरेशंस परफॉर्म करने पड़े पड़े हमें दो तीन यानि गिंति के ही कॉंस्टेंट ऑपरेशन्स परफॉर्म करने पड़े और जब कॉंस्टेंट ऑपरेशन्स होते हैं तो उसकी टाइम कंप्लेक्सिटी होती है बिग ओफ वन तो यहां पर हमारी जो टाइम कंप्लेक्सिटी हो गई इंसर्ट की लिंक लिस्ट में वह हो गई बिग ऑफ वन अब यह बिग ऑफ टाइम कंप्लेक्सिटी जो है वन वाली जो अब यसली नेस देने तो यहां पर हमें एक चीज इंपोर्टेंट चीज पता चल गई कि लिंक लिस्ट को कब यूज करना लिंक लिस्ट को में हमारी time complexity कम लग रही होगी हमें कम time लग रहा होगा तो यहां पर एक खास use case हमारा आ जाता है link list का अब search की अगर बात कर लीजिए मान लीजिए हमें first index पर element search करना है या फिर first index थोड़ सा आसान हो जाएगा मान लीजिए हमें third index पर element search करना है तो उसके लिए क्या करना पड़ेगा शुरुवात से शुरु करना पड़ेगा क्योंकि हमें पता ही नहीं कि कौन सा data कौन से index पर stored है इसलिए हम शुरु से count करते चले जाएंगे पहले हमने count किया 0 पर 1 को फिर 1 पर 2 को, फिर 2 पर 3 को, फिर 3rd index पर finally हम पहुंचे, जहाँ पर data 4 है, तो यहाँ पर हमने search कर लिया, 4 को, अब इसके लिए हमें time कितना लगा, इसके लिए हमने पूरे के पूरे link list को traverse किया, तो हमें time लगा big of n, big of n इसलिए लगा, क्योंकि सारे के सारे elements को traverse करना पड़ा, अगर किसी और index को भी search करना होता, तो भी सारे elements को हम, on an average या asymptotic notations में travel कर रहे होते, इसलिए जो search का time होता है, link list में, बिग ओफ एन, जो है greater than हमारे array list का time यहां से दो चीज़े हम निकाल सकते हैं कि जब भी manipulation वाले operation जादा है यानि add करना है तो उस case में हम link list का use करें और जहां पर search वाले operation जादा है उस case में हम array list का use करें ताकि हमारी time complexity जो है वो optimized हो दोनों cases में तो यहां से हमें कुछ-कुछ differences समझ में आए एक array list और एक link list के बीच में अब link list को हमने बना तो लिया अब बात करते हैं link list की कुछ basic properties के बाद बारे में तो दो तीन प्रॉपर्टीज हम डिस्कस करेंगे सबसे इंपोर्टेंट प्रॉपर्टी है कि लिंक लिस्ट वेरियबल साइज की होती है वेरियबल साइज यानि फिक्स्ट नहीं है जब चाहे जितने चाहे हम एलिमेंट डाल सकते memory भर नहीं जाती, दूसरा point यह है कि non-contiguous memory होती है, continuous memory नहीं चाहिए, हमें तो chunks चाहिए, ताकि हम data को एक दूसरे से connect कर सके, link कर सके, तीसरा point है insert की जो time complexity होती है, big of 1 होती है, और search की time complexity big of n होती है, तो यह कुछ important points हैं, जो हम link list के बारे में जान सकते हैं, अब इसके बाद basic structure की बात करें link list की, तो link list बनता है, basic structure से जिसको हम नाम देते है node तो यह जो छोटे छोटे parts हमने discuss किए जिनको हम link करते हैं इन सारे parts को हम कहते है nodes of a link list node है नोड और यह जो लास्ट में हम नल की तरफ पॉइंट करते हैं इसको भी हम कहते हैं एंप्टी नोड या फिर हमारी नल नोड तो इस तरीके से जो छोटी-छोटी पार्ट्स होते हैं को नोड गए तें अब नोड जो होता है लिंक इसका उसके अंदर दो इंफर्मे� होती है दो इंफर्मेशन किस तरीके से स्टोर्ड होती है पहली चीज जो स्टोर्ड होती है वह होता है हमारा डाटा यानि जो भी चीज हमें स्टोर करनी है जैसे मान लीजिए अपने डाटा भी स्टोर किया था वन अगले वाले नोड में स्टोर किया टू अगले वा होती है वह होता है हमारा next pointer या reference next क्या करता है यह जो linking वाला काम है कि एक node दूसरी node से किस तरीके से link होगी यह next करता है तो इसको visualize करें तो पहला अगर हम node लें तो उसके अंदर store होगा 1 दूसरा node लें उसके अंदर data में store होगा 2, तीसरा node लें उसमें data में store होगा 3, चौथा node होगा हमारा null node, तो यहाँ पर जो next होगा वो point करेगा इस node की तरफ, यहाँ का जो next होगा वो point करेगा इस node की तरफ, यहाँ का जो next होगा वो point करेगा इस node की तरफ, और यहाँ पर null है त एक ट्रेन का एग्जांपल ले सकते हैं ट्रेन यानि ऐसी ट्रेन जिसमें काफी सारे हमारे डब्बे होते हैं तो ट्रेन का जो हर एक डब्बा होता है वह होता है सिंगल नोड उस डब्बे में स्टोर्ड होते हैं हमारे कुछ-कुछ सामान तो इस सामान को हम कह सकते हैं डेटा और हर डब्बा दूसरे डब्बे से चेन के थ्रू कनेक्टेड होता है ताकि पता पॉइंटर या फिर जो हमारे रेफरेंस की तरफ पॉइंट कर रहा है रेफरेंस यानि हम जब ऑप्शन बना बनाते हैं तो उनका कुछ आड्रेस होता है हमें पता होता है कि वह ऑब्जेक्ट हम कौन सी ऑब्जेक्ट की बात कर रहे हैं उसको हम रेफरेंस कहते हैं जावा के अंदर तो नेक्स्ट हमारा रेफरेंस स्टोर करता है यानि एक तरीके से अगले वाले नोड का आड् अगले वाले का भी address निकाल लूंगा, उससे अगले वाले का अगला node निकाल लेगा, तो इस तरीके से train के डब्बे की तरह हम link list को visualize करते हैं, और अगर एक link list के structure की अगर बात करें, तो एक sample link list हमने consider की है, जिसमें data की form में क्या stored है, हमारी strings, तो पहली string है this, दूसरी है is, फि लिस्ट तो यह पूरी की पूरी लिंक लिस्ट है जिसके अंदर हमने स्ट्रिंग्स को स्टोर करा रखा है अब लिंक लिस्ट के अंदर हम फर्स्ट नोड को ट्रैक करते हैं क्योंकि बाकी सारी नोड का हमें आड्रेस की जरूरत ही नहीं है अगर हमने पहली नोड का आड्र तो पहली नोट से दूसरी पर जा पाएंगे दूसरी से तीसरी पर जा पाएंगे तीसरी से चौथी पर जा पाएंगे एंड सो ऑन इसलिए अगर सिर्फ पहली नोड का यानि इस नोड का हमारे पास आड्रेस हो तो उसके बाद किसी और नोड का हमें आड्रेस चाहिए नही नोड को हम है दिखते हैं तो लिंग लिस्ट की भाषा में है क्या होता है लिंग क्लिस का पहला नोड अब है दिखे अलावा हम टेल भी कह सकते हैं टेल यानि हमारा लास्ट नोड अब लिंग के तीन टाइप्स होते हैं पहली होती है हमारी सिंग्यूलर लिंग लिस्ट दूसरी होती है हमारी डबल लिंग लिस्ट या डबल एंड लिंग लिस्ट तीसरी होती है हमारी सरकुलर लिंग लिस्ट अलग से lecture बना रहे होंगे लेकिन basic अगर हम समझना चाहें तो singular link list होती है जिसमें ये हमारा head होता है और हम next next करते हुए अपने आगे वाले नोट को पॉइंट करते रहते हैं और फाइनली हम नल पर पहुंच जाते हैं डबल एंडेड लिंक लिस्ट की बात करें तो उसमें क्या होता है हमारा हेड तो होता है लेकिन हर नेक्स्ट के साथ एक नोड में एक प्रीवियस भी नोड होता है यानि हम आगे तो जा सकते हैं पर उसके साथ हम पीछे भी जा सकते हैं तो डबल एंडेड हो गया ना लास्ट नोड हमारी फर्स्ट नोड से कनेक्ट कर जाता है यानि इस नोड को यहां पर कनेक्ट कर दें तो यह बन जाएगी हमारी सर्कुलर लिंग इस सर्कुलर लिंग इसके अंदर कभी यह लास्ट वाला नल पॉइंटर नहीं आता तो एक खास बात होती पर तो इन दोनों को अलग क्लास में डिस्क्रिस करेंगे इस क्लास में सिंगल एंड लिंक लिस्ट की बात करेंगे जिसमें सिर्फ नेक्स्ट पॉइंटर होता है और सिंगल हेड हम स्टोर करते हैं तो हम लिंक लिस्ट का हम कोड लिखने की कोशिश करते हैं ये बिगिनर्स के लिए कोड होने वाला है और इसको समझना बहुत इंपोर्टेंट है पहली बार अगर हम देख रहे हैं तो हो सकता है हमें थोड़ा सा कॉंप्लिकेटेड लगे लेकिन इसको बार-बार हम देखते रहेंगे तो चीजें और आसान हो जाएंगे तो एक बार में तो उसमें question में लिखा नहीं होता कि आप इसको link list से solve करिए, आप इसको graph से solve करिए, आप इसको trees से solve करिए, हमें खुद से analyze करना होता है कि कौन सा data structure सबसे सही होगा, इसलिए हमें properties पता होनी चाहिए, इसलिए हमने शुरुआत में discuss किया कि जब insertion करना हो बार-बार, तो link list को prefer करेंगे, जब search करना हो बार-बार, तो array list को prefer करेंगे, तो इस तरीके से काफी सारे data structures की, जब हम properties जान लेते हों, तो हमें आदत हो जाती है जाननी कि कौन से question में, हमें कौन सा data structure लेना है. तो अगर आपको basic scratch पता है तो directly आप collection framework जब हम use करेंगे link list class वहाँ वारे code पर jump कर जाएगे नहीं तो आप scratch वाला code देख लीजेगे अब code के अंदर हमने already एक link list class बनाई हुई है अब link list class already java के अंदर exist करती है इसलिए class का नाम हमने ll दे दिया है ताकि कोई error ना आए ll हमारी class का नाम है जो represent करती है एक link list को इसके अंदर है हमारा main function अब क्या करेंगे कि अपनी क्लास का अपनी लिंक लिस्ट का एक नोड क्लास इसके अंदर बनाएंगे तो हमें क्या करना होता है जो हमारा नोड होता है उसके अंदर जिसके अंदर हम डेटा स्टोर कर सकें जिसके अंदर हम नेक्स्ट पॉइंटर स्टोर क्लास बना ली हमने नोड अब नोड के अंदर क्या-क्या स्टोर करना है हमें सबसे पहली चीज जो स्टोर करनी है वह डाटा दूसरी चीज जो स्टोर करनी है वह हमारा नेक्स्ट और नेक्स्ट का टाइप क्या होने वाला है next यानि अगले वाला node तो इसका type भी क्या होगा node अब ये थोड़ा सा complex लग सकता है जब हम पहली बार देख रहे हैं क्यों क्यों कि हम पहली बार ऐसा देख रहे हैं कि node class के अंदर ही हमने node class का एक जो parameter है एक जो variable है वो देख लिया ये first time देख रहे होंगे पर अगर oops के concepts हमें अच्छे से आते हैं तो confusing नहीं लगेगा अब next हमने ले लिया अब इसका ही एक constructor हम बना लेते हैं जिसके अंदर हम string type का जो data है उसको ले रहे होंगे, अब this.data को assign कर देते हैं हमारा data, हमारा जो next होगा वो by default सब के लिए null होगा, यानि जब भी एक नया node बना रहे हैं उसका next हमेशा null होगा शुरुवात में, शुरुवात में single node create होगा, लिस्ट की अगर बात करें तो link list को बनाने के लिए हमें सबसे पहले अपनी ही class की एक object बनानी पड़ेगी यानि ll class की एक object बनाएंगे जिसको हम नाम देंगे list और इसको initialize कर लेते हैं ll से अब list को हमने initialize कर लिया अब सबसे पहले कौन से operations हम perform करने वाले हैं आज की class में चार operations को देखेंगे पहला है insert करने का या add करने का operation दूसरा हमारा link list को print करने का operation तीसरा है delete करने का node operation चौथा है हमारा साइज को चेक करने का ऑपरेशन यह चार सबसे मेजर और सबसे इंपोर्टेंट ऑपरेशन से लिंक लिस्ट के अंदर जो हमारे हमेशा काम आएंगे इसके अलावा कुछ-कुछ ऑपरेशन होते हैं और लेडी एग्जिस्टिंग कलेक्शन फ्रेमवर्क मे से important है यह हमें आ गए तो हमारी mostly जो link list है वो complete हो जाएगा अब पहला operation जिसकी हम बात करेंगे वह है add करने का operation अब दो तरीके के add हो सकते हैं link list में एक होता है add first एक होता है add last अब usually अगर आप coding sites पर जाकर refer कर रहे हैं articles को तो वहाँ पर है एक ही add कभी-कभी अगर लिखा हो तो वह usually add last को consider कर रहे हैं क्योंकि उसका implementation मुश्किल होता है यहां पर हम दोनों की बात करेंगे सबसे पहले add first add first यानि हम हमें एक link list दियी हुई है, उसके अंदर हमें कोई element add करना है, कोई node add करना है, first position पर, पहले visualize कर देते हैं, कैसे करेंगे, मान लेते हैं, ये हमारी link list है, जिसके अंदर already हमारे पास कोई elements हैं, 2, 3, 4, कि नल अब हमें एक नया नोड बनाना है वन और इसको फर्स्ट पोजीशन पर आड करना है यहां है हमारा है तो क्या करेंगे इस नए नोड का जो नेक्स्ट होगा वह अभी तो यानि शुरुआत में तो पॉइंट करेगा नल की तरफ क्योंकि शुरू में लिंक नहीं बनती शुरू में नोड बनता है तो इस नल की जगह इस नोड का नेक्स्ट जो होगा वह है डिफिक्टर पॉइंट कर आए और उसके बाद हम head को यहां से हटा कर हमारा नया head बना देंगे अपनी नई node को तो हमारी नई link list कैसी दिखेगी हमारी नई link list में one पहले आ जाएगा जो बन जाएगा हमारा head उसके बाद two फिर three फिर आएगा हमारा four and finally हमारा null तो कुछ इस तरीके से हम first position पर add करेंगे कैसे add करेंगे नया node बनाएंगे उसके next को head की तरफ point करवा देंगे और नई node को head बना देंगे तो इसको देखने कैसे करेंगे यहाँ पर सबसे पहले function फंक्शन लिखते हैं पब्लिक वॉइड एड फर्स्ट एड फर्स्ट के अंदर परमीटर हम पास करेंगे हमारा स्ट्रिंग का डाटा अब स्ट्रिंग के अंदर सबसे पहले क्या चेक करेंगे सबसे पहले चेक कर लेते हैं कि क्या हमारा है दिनाल है इस हेड इकुल टू नल अगर हेड नल है तो हमें क्या करना है सिंपली एक नोड क्रिएट कर देना है और उसको साथ उसको अटैच कर सकें तो सबसे पहले हम नोड को ही क्रिएट कर लेते हैं नोड न्यू नोड इज इक्वल टू न्यू नोड के अंदर पास करेंगे हमारा डेटा अब यहां पर हेड को हेड में असाइन कर देंगे अपने नई नोड की वैल्यू यहां से कर जाएंगे हम return लेकिन अगर already exist करती है यानि हमारा नल नहीं है तो उसके इसमें क्या करेंगे उसके इसमें हमने जो भी प्रोसेस डिस्कस किया उसको करेंगे तो हमारे न्यू नोड का जो नेक्स्ट होगा वह पॉइंट करेगा हमारे हैड की प्रोसेस और हेड जो होगा उसकी वैल्यू बन जाएगी अब न्यू नोड अ तो इस तरीके से हम फाइनली रिटर्न कर जाएंगे तो न्यू नोट का जो नेक्स है वह बैठ की तरफ पॉइंट कर रहा है और है जो हमारा है वह नया नोट बन गया है तो इस तरीके से हम आड कर देते हैं फर्स्ट पोजीशन पर हमारी लिंक लिस्ट में अब अगर आड कर string हमें pass करनी है, dot add first is, तो कुछ इस तरीके से list के अंदर हमने a को add कर दिया, list के अंदर फिर हमने इस को add कर दिया, अब एक add last का भी function लिख लेते हैं, add last के लिए function बनाते हैं, public void add last, इसके अंदर भी हम string form में अपना, डाटा ले रही होंगे अब आप लास्ट को भी सबसे पहले विजुलाइज कर देते हैं और उसके बाद हम बात करेंगे तो अकॉर्डिंग टू हमारा कोड हमने सबसे पहले क्या किया एस्टोर किया उससे पहले क्या स्टोर किया इस स्टोर किया है इस पॉइंट कर र तो हमें लास्ट में ऐड करना है मान लीजिए लिस्ट नाम का एक डेटा तो इसको कैसे करेंगे लिस्ट की एक नोड बनाएंगे और क्या करेंगे हमारा हेड जो कि अभी है इस हेड से एक एक आगे बढ़ते जाएंगे जब तक हमारा नल नहीं आ जाता जैसे ही हम इस लास्ट नोड पर पहुंचेंगे तब क्या करेंगे इस लास्ट नोड का जो नेक्स्ट होगा उसको पॉइंट करवा की तरफ point कर रहे हैं तो ये वाला null हट जाएगा last node को हमें ढूंढना है और last node को point करवा देना है अपने list की तरफ अपने नए node की तरफ I hope ये हमें समझ में आया होगा कि already existing एक list हमारे पास थी हम क्या करेंगे head से traverse करना शुरू करेंगे travel करना शुरू करेंगे एक एक node पर जाएंगे और last node को ढूंढकर उसके next को point करवा देंगे अपने नए node की तरफ अब नए node जो है उसका next तो already null को point करेंगे कर रहा है तो इस तरीके से हमारी list में हम add कर देंगे last position पर तो यहाँ पर अपनी add last function को complete करते हैं सबसे पहले देख लेते हैं same चीज कि हमारा जो head है वो खाली तो नहीं है तो यहाँ से चीजें कुछ copy paste कर लेते हैं नई node हमने बना ली head को देख लिया traverse करेंगे traverse करने के लिए किसी भी link लेंगे इसको travel करने के लिए हमने क्या करना पड़ता है एक node create करना पड़ता है जिसको हम हेड की वैल्यू असाइन कर देते हैं और उसके बाद एक-एक करके हम इस करेंट नोड को अपडेट करते रहते हैं तो जब तक हमारा यह जो करेंट नोड है इसका नेक्स्ट अ नल नहीं हो जाता तब तक ट्रावल करेंगे करेंट नोड को बना देंगे करेंट नोड का नेक्स्ट अब इतनी सी जो यह दो तीन लाइने है यह हम पहली बार लिंक लिस्ट की बात कर रहे हैं तो थोड़ी सी कॉम्प्लिकेटिड लग सकती है पर है नहीं इन लाइनों को भी पहले store था is उसके बाद a उसके बाद next और यहाँ पर है हमारा head अगर हम head को update कर दे रहे थे यानि head के next को बना देते हैं, तो इसको हम head बना देते हैं और इसको काट देते हैं, तो क्या होता हमारा जो starting point है link list का उसको हम lose कर देते और अगली बार के लिए हमें पता ही नहीं होता कि हमारी पूरी link list का head क्या है क्योंकि यह head तो अब A के पास चला गया इसको कैसे track करें इसको track करने का कोई तरीका ही नहीं है इसलिए head जो होता है link list का उसपर कभी manipulation वाला operation perform नहीं करना यानि उसको कभी change नहीं करना उसको as a constant हमें treat करना है क्योंकि उसको change कर दिया तो हमारी link list के लिए हम काफी सारी valuable information जो है उसको खो दे देंगे अब क्या करना है हेड को तो हम चेंज नहीं कर सकते लेकिन हम क्या कर सकते हैं अपने हेड को हेड रखते हुए इसको एक करेंट नोड को आसाइन कर सकते हैं अब इस करेंट नोड को पहले इसकी तरफ पॉइंट करवाएंगे फिर यहां से हटा के करेंट नोड को एकी तरफ पॉइंट करवाएंगे फिर यहां से हटा के करेंट नोड को नल की तरफ भी पॉइंट करवा सकते हैं तो करेंट नोड को अपडेट कर दें उसमें प्रॉब्लम नहीं है हेड को अपडेट कर दें उसमें बहुत बड़ी प्रॉब् पहले जो हमारा करेंट नोड है वह यहां पर पॉइंट करता है हमारे हेड की तरफ उसके बाद क्या करते हैं हम उसे अगले वाले पर ले जाते हैं उसके बाद उसे अगले वाले पर ले जाते हैं इस तरीके से हम ट्रोवर्स कर रहे हैं अपनी लिंग इसकी तरफ और हर बार अपडेट कैसे करते हैं करने नोड इज इकल टू करेंट नोड का नेक्स्ट लास्ट नोड पर कब पहुंचेंगे जब करेंट नोड का नेक्स्ट नल हो जाएगा उससे पहले लास्ट नोड पर नहीं पहुंचेंगे जैसे ही लास्ट नोड पर पहुंचें तो करेंट नोड को क्या करेंगे करेंट नोड का नेक्स्ट को बना देंगे हमारी न्यू नो नेक्स्ट अभी नल था उसमें असाइन कर दिया नया नोड और नया नोड का नेक्स्ट तो नल है ही तो इस तरीके से हमने एड लास्ट भी कर दिया यानि लास्ट में अब हमारा एड जो है वह कंप्लीट हो गया है अब एड लास्ट करने के बाद पब्लिक वॉइड प्रिंट लिस्ट के अंदर कुछ भी पास नहीं करना हमें और ये वाला जो simple code है इसको बस उठा के copy कर लेना है और paste कर लें, तो current node एक node ले लिया जिसमें head की value assign कर दी, अब हर एक बार print कर देंगे अपने current node के data को, तो dot data से access कर लिया data को, और यहां से ln हटा लेते हैं, current node की data को print करा दिया, current node को update कर दिया, end में क्या print करवा देते है, end म और इस लाइन को खटा देते हैं तो इस तरीके से हमारी जो प्रिंट हो रही होगी लिस्ट वो कुछ इस तरीके से प्रिंट होगी इसको कर लेते हैं सेफ अब इसमें हमने एक कॉरनर केस मिस्कर दिया वो यह है कि हेड अगर अलरेडी नल हुआ तो अगर हमारी लिस्ट में को है तो यहां पर लिखने लिस्ट इस एंप्टी और यहां से कर जाएंगे हम रिटर्न अब एक छोटी सी प्रॉब्लम जो मुझे आती है क्योंकि सी प्लस जावा में दोनों में कोड करती हूं तो जो स्टूडेंट सी प्लस जावा में कोड करते हैं नाल जो होता है वह सी प्लस का नाल होता है स्मॉलर केस में जब नल लिखते हैं यह जावा बावा वाला नल होता है तो काफी सारा कंफ्यूजन हो जाता है जब आप साइमल्टेनियसली दो तीन लैंग्वेज इसमें कोड करते हैं तो आप सिंटेक्स थोड़ा सा भूलते रहते हैं तो इस चीज से बचने का यह तरीका है कि एक टाइम पर एक लैंग्वेज पर ज्यादा फोकस करें ताकि हमें सिंटेक्स जो है वह सही याद रहे और गलतियां कम हो तो यहां पर प्रिंट लिस्ट का यह फंक्शन बना लिया अब अपने में के अंदर हमने लिस्ट में आईएड किया था एक फिर लिस्ट में आईएड किया था इस अब यह करेंगे अपनी लिस्ट को प्रिंट कर वाते हैं सबसे पहले लिस्ट डॉट प्रिंट लिस्ट उसके बाद क्या करेंगे अब आगे बढ़ने से पहले हमें सबसे पहली चीज जो अपनी क्लास में करनी चाहिए थी वह था है डो क्रिएट करना तो है डो क्रिएट करेंगे नोड बना दिया एक हेड टाइप का अब हमारे पूरे कोड को पता है कि हेड क्या है और एक छोटी सी चीज प्रिंट लिस्ट के अंदर हम यहां पर नेक्स्ट नहीं कर रहे होंगे क्योंकि यहां पर हमने नेक्स्ट किया था ताकि हम नेक्स्ट वाला जो है हमारा लास्ट वाला नोड उसको बाहर निकाल सके करके यहां पर हमें लास्ट वाले नोड को भी प्रिंट करवाना है यहां पर डॉट नेक्स्ट कर दिया तो हमारा लास्ट वाला नोड जो है वह प्रिंट नहीं हो रहा होगा इसलिए डॉट नेक्स्ट नहीं करेंगे और अब अपने मेन फंक्शन के अधर जाकर हम यहां पर लिस्ट डॉट प्रिंट लिस्ट कॉल कर लेते हैं इसको सेव करते हैं रन करते तो हमारे लिए हमारी जो list है वो print होकर आ जाएगी, list में क्या print होकर आया, सबसे पहले क्या हुआ होगा, main function को देखें तो, add first में add हुआ होगा a, a के साथ आया होगा null, उसके बाद a से पहले add first की वज़े से आ गया होगा is, तो is अप पॉइंट करता है a को, कर देते हैं save और इसके बाद इसे print भी कर लेते हैं तो list.printlist save तो यहाँ पर सबसे पहले is a लिखा था अब क्या आ गया is a और last में क्या add हो गया हमारा list तो अब पूरा का पूरा जो link list है वो बन गया is a list यहाँ पर आ गया null अब यहाँ पर एक और चीज आड कर लेते हैं list.add first म लिस्ट डॉट प्रिंट लिस्ट सेव कर दिया इसे रन करते हैं और एक पूरा को पूरा सेंटेंस हमने लिंक लिस्ट की फॉर्म में सेव कर दिया है विच इस इस ए लिस्ट तो इस तरीके से लिंक लिस्ट के अंदर हमने प्रिंट सीख लिया लिंक लिस्ट के अंदर हमने आ एक list हमारे पास है जिसमें है this is a list, now handwriting थोड़ी सी गंदी लग रही होगी, थोड़ी देर के लिए bear करते हैं, I am trying my best. यह पॉइंट करता है हमारे नल को अब यहां से मान लीजिए हमें डिलीट करना है यह वाला नोड अब जैसे हमने आड के अंदर आड फर्स्ट और आड लास्ट देखा वैसे ही डिलीट के अंदर भी डिलीट फर्स्ट और डिलीट लास्ट लास्ट को हम पढ़ने वाले हैं तो सबसे पहले बात करेंगे डिलीट फर्स्ट की अगर हमें फर्स्ट को डिलीट करना है तो सिंपली क्या करेंगे फर्स्ट का जो नेक्स्ट होगा उसको हेड बना देंगे यहां से हम हट गए इसको हमने खरम कर दिया तो जब भी head को कहीं और shift कर देते हैं तो पहले वाला note जो head था वो हमेशा के लिए गायब हो जाता है तो ये वाली जो चीज है अब हमेशा के लिए गायब हो गई है this is lost forever इसको उठा कर ले जाएगा उड़ा कर ले जाएगा हमारे java का garbage collector तो यहाँ पर बन जाएगा हमारा नया head और हम simply क्या करेंगे head को अगले वाले यानि head के next को assign कर देंगे तो इस तरीके से हमारा head जो है delete हो जाएगा अगर हमें मान लीजिए first को delete नहीं करना last को delete करना है यानि इस node को delete करना है तो क्या करेंगे simply traverse करते रहेंगे next next तक traverse करते रहेंगे next next तक जैसे ही हम second last node तक पहुँचेंगे हमें ढूंढने है क्या second last node second last node तक पहुचते ही हमारे पास second last node होगी हमारे पास last node होगी हम क्या करेंगे second last node के next को बना देंगे null, जैसे ही second last node के next को बनाया null, ये वाला connection कट जाएगा, ये वाला connection जैसे ही कट गया, ये पूरा का पूरा हिस्सा जो है, वो गायब हो जाएगा memory, से और हमारे पास सिर्फ ये पहले वाला हिस्सा बचेगा अपनी link list के अंदर I hope कि हम clear हैं क्या होगा ये वाला connection हमारा completely कट जाएगा इतना हिस्सा link list से गायब हो जाएगा और हमारे पास ये वाली कुछ link list जो है वो बन कर आ रही होगी, तो funda किस में क्या रहा, first को delete करना है तो बस head का next को head बना दीजे, last को delete करना है तो traverse करके जाओ और second last के next को null कर दो, इसी चीज़ से हम अपने जो functions हैं वो लिखने वाले हैं, सबसे पहले करेंगे delete first, पब्लिक वाइड डिलीट फर्स्ट के अंदर कोई पैरमीटर नहीं आ रहा सबसे पहला जो हमारा कॉर्नर केस है कॉर्नर केसेस क्या होते हैं कोडिंग के अंदर कॉर्नर केसेस वो केसेस होते हैं जो नॉर्मल केसेस से अलग होते हैं एक तो होता है कि हमारे पास simple सी link list है उसमें हम first delete कर दे, last delete कर दे, पर ऐसा भी तो special case हो सकता है जिसमें हमारी पूरी list खाली हो, इसको हम corner case कहेंगे, तो जब भी अगर हमने coding शुरू कर दिया है different platforms के उपर, तो हम बहाँ पर जाकर अगर, test cases solve करते हैं तो हमें पता होगा कि हम corner case किसको कहते हैं नहीं तो दीरे दीरे coding के अंदर हम सीखी जाएंगे अब सबसे पहले corner case है कि अगर हमारा head null हुआ तो तो अगर हमारे head की value जो है null है तो उस case में print कर देंगे the list is empty और यहां से कर जाएंगे return और अगर head not null है तो उस case में क्या करेंगे है हेड को बना देंगे हेड का नेक्स्ट बस यह सिंगल लाइन हमें लिखनी है डिलीट फर्स्ट करने के लिए हमारा जो पहला है वह डिलीट हो चुका है अब डिलीट लास्ट के लिए क्या करेंगे पब्लिक वॉइड डिलीट लास्ट इसके अंधर भी कोई पारामीटर नहीं आएगा इसमें भी हम अपना कॉर्नर के जो है वह लिख लेते हैं कॉर्नर के सामने लिख लिया टाइरेंट नोड हम बना ले तो नोड सेकंड लास्ट नाम देते हैं सेकंड लास्ट में असाइन करेंगे अपना हे� एंड अपना एक और नोड बना लेते हैं जिसको कहेंगे लास्ट नोड, लास्ट नोड में असाइन करेंगे हेड का next, अब ट्रेवर्स किस तरीके से करेंगे यहाँ पर, जब तक हमारे लास्ट नोड का जो next है, वो null नहीं हो जाता, जैसे ही लास्ट नोड का next null होगा, मतलब हम link list के last नोड पर आकर पहुँच गए हैं, तब तक हम update कर देते हैं, लास्ट नोड को बनाते रहेंगे, लास्ट नोड का next, second last नोड को बनाते रहेंगे second last का next, अब यहाँ पर भी एक और corner case arise करता है, कि अगर यह head.next पहले ही null है, तो यहाँ पर अगर हम head.next का next अगर लिख देंगे, तो null का next है, का तो कोई next होता ही नहीं, बात समझ में आई, मतलब अगर हमारा head.next null है, तो उस case में क्या होगा, हमारा last node भी null है, last node अगर null है, तो null का, dot next अगर हम करेंगे तो error आएगा, dot next क्योंकि है ही नहीं null का, यहाँ पर null का dot next कर नहीं सकते, इसलिए इस case से बचने के लिए हम एक और corner case यहाँ पर लिख देते हैं, कि अगर head का next null है, head का next किस case में null होगा जिस case में link list में एक ही node होगी जिस case में link list में एक ही node है उस case में आप क्या करिए head को बना दीजे null and simply यहां से कर जाएंगे return बस इतनी सी चोटी सी चीज़ हमें करनी है तो हम इस पूरे के पूरे case को avoid कर देंगे जैसे ही second last node हमें मिल गई तो second last का जो next है वो बन जाएगा null है और इस तरीके से हमारा पूरा पूरा फंक्शन कंप्लीट हो गया है दो कॉर्नर के इस कंसिडर की हेड्र नल है तो कुछ नहीं कर सकते हैं हेड का नेक्स्ट नल है यानि सिंगल नोड है तो उसके इसमें उसको डिलीट कर देंगे सेकंड लास्ट नोड निकाल लिया कैसे इस वाइल लूप को यूज करके ट्रवर्स करके एक बार थोड़ा से इसको विजुअलाइज कर लेते हैं क्योंकि कि जिसके अंदर हमने क्या किया इसको दे दिया सेकंड लास्ट इसको दे दिया लास्ट शुरुआती स्टेजेस में अब इसको हम एक आगे बढ़ा देंगे तो यह बन गया लास्ट इसको हम एक बार भी बढ़ा लेंगे तो यह बन गया सेकंड लास्ट अब इसको ए तो एक आगे बढ़ा देंगे, तो यह बन गया second last, अब इस last का next जैसे ही null हुआ, मतलब हम सही position पर आ गया है, हमने अपने last node को निकाल लिया है, जैसे ही last node को निकाल लिया, second last को भी निकाल लिया, तो यह हमारा second last बन गया, second last के next को, अब हम कर देंगे, नल तो इस तरीके से हमारा इतना जो लिंक लिस्ट होगा वो कंप्लीटली डिलीट हो जाएगा तो यह लास्ट नोड हम डिलीट कर देंगे तो इस तरीके का कॉनसेप्ट हमारा रहेगा अब अपने मेन फंक्शन के अंदर जाकर क्या करते हैं हमने एक लिंक लिस्ट बना ली थी लिंक लिस्ट के अंदर दिस इज लिस्ट हमने लिखा था अब वहां से डिलीट करना शुरू करते हैं लिस्ट और डिलीट फर्स्ट करेंगे और उसके बाद लिस्ट को कर देंगे अ इसे सेव करते हैं, रन करते हैं, हमारी लिस्ट थी, this is a list, उसके बाद हमने first पर से delete कर दिया this को, और हमारी लिस्ट में बस बच गया, is a list, इसके बाद एक और function कर लेते हैं, list.delete, लास्ट अब लिस्ट को कर देते हैं प्रिंट इसे कर देते हैं सेव और रन किया तो इजल आस इजल और रन किया इजल लिस्ट बच गया था अब उसमें सिर्फ इजल बच गया हमारा जो लिस्ट है वो कंप्लीट completely हमने delete कर दिया अपनी link list से, अब क्या करेंगे, एक last important function हम discuss कर लेते हैं, जो है size का, link list के अंदर size को कैसे track करें, जरूरी नहीं है कि हम पूरा का पूरा traverse करके, अपने size को track करें, हम साथ के साथ भी size को track कर सकते हैं, कैसे, एक हमारा variable बना लेते हैं, private type का, जिसको int type दे देते हैं, size, अब जैसे ही, value, value रखेंगे 0, अब अपनी class का constructor बना ले दें, constructor, के अंदर initialize कर देंगे अपने size को किस value के साथ 0 के साथ तो this.size is equal to 0 अब जैसे ही नया node हम create कर रहे हैं वहाँ पर कर देंगे size को plus plus और जैसे ही node को delete कर रहे हैं यानि यहाँ पर कर देंगे size को minus minus और यहाँ पर भी कर देंगे size को minus minus, अब यह जो size minus minus है यह नीचे यहाँ पर या फिर यहाँ पर नहीं लिख सकते, क्यों क्योंकि यह जो head.next वाली value है इसको हम miss कर देंगे इस condition को, मतलब single head जिस case में है उस case में हम size minus minus करना बूल जाएंगे, इसलिए इसको हमने ऊपर लिखा है, इसको इस if से नीचे नहीं लिख सकते, तो यहाँ पर अब एक function बना लेते हैं, जो हमारे size को return करेगा, public int get size नाम से function करते हैं, return size, अब main function के अंदर last में, list.get size को call करते हैं, और print करवा लेते हैं, इसको कर लेते हैं save और इसको कर लेते हैं अब run तो last में हमारी जो link list थी उसके अंदर कितने nodes बचे थे सिर्फ is वाला node बचा था और a वाला node बचा था null count नहीं करता size बएं तो दो ही node बचे थे तो हमारी link list का size हमारे पास आ गया है 2 इसके बाद क्या करेंगे एक और जो node है उ कि दिस दुबारा से अब इसके बाद एक और बार साइज को कॉल करके वेरिफाई कर लेते हैं रन किया तो अब हमारा साइज थ्री आना चाहिए क्योंकि तीन नोट जा गए हैं तो साइज हमारे पास प्रिंट होकर आ है थ्री तो कुछ इस तरीके से लिंक लिस्ट के परफॉर्म करते हैं आड करने का प्रिंट करने का डिलीट करने का और साइज लेने का अब हम करने वाले हैं लिंक लिस्ट को कलेक्शन फ्रेमवर्क्स की फॉर्म में कलेक्शन फ्रेमवर्क्स को यूज करके सारे के सारे फंक्शन जो हमने स्क्रैट से लिखे हैं सारे सारी की सारी क्लास जो मैंने स्क्रैच से बनाई है यह मैं ऑलरेडी मिल जाती है जावा के अंदर तो इसीलिए जब हम प्लेसमेंट के लिए कंपेटिव प्रोग्राम के लिए कोड लिख रहे होते हैं तो स्क्रैच से नहीं लिखना पड़ता है और डिफरेंट हमारे पास सारा का सारा कोड पहले से अवेलेबल है उन टूल्स को बस हमें उठाकर यूज कर लेना होता है तो क्या करेंगे अपने सारे के सारे कोड को सबसे पहले उड़ा लेते हैं सिर्फ अपने मेन फंक्शन को रखेंगे यहां पर तो यह हमारी लिंक लिस्ट क्लास है इसके अंदर लिंक लिस्ट को यूज करने के लिए सबसे पहले हमें इंपोर्ट करना पड़ेगा लेगा अपना पैकेज जावा डॉट यूटिल डॉट ऑल यहां पर डॉट ऑल मतलब स्टार की जगह हम डॉट लिंक लिस्ट भी कर सकते हैं बट आई प्रेफर टो यूज डॉट स्टार जब सारा का सारा कोड एक साथ लिख रहे होते हैं अब यहां पर मेन लिंक लिस्ट ऑफ किस टाइप का डेटा में स्टोर करना है उस लिंक लिस्ट के अंदर स्ट्रिंग टाइप का डेटा स्टोर करना जाते हैं इसको इंटीजर भी बना सकते हैं पर यहाँ पर स्ट्रिंग डाइप का डेटा स्टोर करते हैं नाम देते हैं इसको हम लिस्ट तो करना तो list.add first add first के अंदर हम क्या करेंगे और जो हमने पहले implement किया था वो कर देते हैं list.add first के अंदर हम is लिख देते हैं तो ये दो strings हमने pass कर दी अब क्या करेंगे list को print कर देंगे तो print करने के लिए just system.out.print लिखते हैं और बस अपनी list को हम print कर देते हैं सबसे पहले print होगा is इस उसके बाद तो क्या हुआ आईड फर्स्ट ने सबसे पहले लिस्ट के अंदर एक ओर आईड किया होगा तो यहां पर आ गया फिर आईड फर्स्ट ने इसको एसे पहले आईड किया होगा क्योंकि आईड फर्स्ट क्या करता है पहले जो लिंक लिस्ट है उससे सबसे पहले यानि हेड पर लाकर हमारे नए नोट को प्लेस कर देता है तो इस बन गया हमारा नया हेड तो इस बन गई एड लास्ट फंक्शन के अंदर पास करेंगे एक और नई स्ट्रिंग उसके बाद दुबारा से प्रिंट करवा लेते हैं अपनी लिस्ट को इसको कर लेते हैं सेव रन कोड और यहाँ पर क्या आया इज और दिस तो जो हमारा लास्ट वर्ड था वो लास्ट में ही आड हो गय लिस्ट ताकि पूरा को पूरा हमारा सेंटेंस जो है वह फॉर्म हो जाए इस कोड को एक बार रन कर लेते हैं है तो हमारी जो लिंग लिस्ट बनी वह बनी दिस इज अलिस्ट तो सबसे पहले जो आधा वह आड़ हुआ फूर उसको बाद इज आड़ हुआ फिर दिस को हमने फर्स्ट में आड़ किया फिर लिस्ट को हमने लास्ट में आड़ किया अब यहां पर अगर हम लास्ट हटा दे और सिर्फ ऐड रखें तो उसका output एक बार observe करते हैं क्या आएगा output में हमारे पास आया this is a list तो by default क्या होता है link list के अंदर अगर हम add सिर्फ लिखते हैं और add last नहीं लिखते हैं तो भी by default जो हमारे नए notes होते हैं वो last में add होते हैं लेकिन first के लिए हमें अलग से specify करना पड़ता है कि add first तो इ तो list.size करके एक function होता है जो size को return करता है, अब run करें अपने code को, तो इसके अंदर list के अंदर 4 elements है, और उसका size क्या आएगा, link list का 4, अब यहाँ पर क्या हो रहा है, यह this जो है एक node है, जो is वाले node को point कर रहा है, is a वाले node को point कर रहा है, a list वाले node को point कर रहा है, और list point कर रहा है finally हमारे null node को, अब क्या करेंगे, अब हमें अपनी link list को print करवाना है, तो link list के उपर एक loop हम लगा सकते हैं, loop लगा सकते हैं, iterate कर सकते हैं, तो int i is equal to 0, i less than, जब तक हमारी list का, जो size है, वहाँ तक हम पहुँच नहीं जाते, i plus plus, यहाँ पर हम प्रिंट करते रहेंगे, लिस्ट के elements को, और लिस्ट के elements को कैसे लेना है, लिस्ट के elements को लेने के लिए, एक dot get नाम से function है, अब जब हमने collection framework की बात की थी, तो कुछ-कुछ हमने functions डिस्कुस किये थे, array list के अंदर भी कुछ-कुछ functions डिस्कुस किये थे, यह सारे की सारे functions, इस link list के अंदर भी available है, तो dot get हम करते हैं, तो dot get of, आयत index पर, जो present element है, उसको हम return कर दें, और लास्ट में हम प्रिंट कर दें एक नल को अब इस कोड को एक बार रन कर लेते हैं तो हमारी सारी की सारी जो लिस्ट है वो प्रिंट हो जाएगी हमारी लिस्ट में सबसे पहले क्या था हमारा नोड दिस इस और लिस्ट और लिस्ट फाइनली किसको पॉइंट कर रहा है हमा तो इस तरीके से हम list को print कर लेते हैं उस पर traverse कर लेते हैं अगर मान लीजिए अपनी list के अंदर हमें कुछ search भी करना है तो हम कैसे search करेंगे यहाँ पर compare कर लेंगे अगर हमें किसी value के लिए search करना है तो compare कर लेंगे कि क्या list में i-th index पर जो stored value है वो उस value के equal है तो इस तरीके स अब next क्या है delete first and delete last, तो delete first कैसे करेंगे, अब यहाँ पर जो function हम use करेंगे, उसका नाम है remove first, remove first क्या करेगा, first वाले हमारे node को remove कर देगा list से, तो remove first को call किया, उसके बाद अपनी list को हमने करवा लिया, print, इसको एक बार run करते हैं, हमारी list में last में क्या था, this is a list, हमने this को यानि first node को remove कर दिया, तो is a list बच गया, से भी node remove कर दें तो उसके लिए लिखेंगे function list.remove last फिर उसके बाद अपनी list को हम print करवा लेते हैं is a list के बाद हमने list को भी remove कर दिया तो हम अपनी शुरुवात वाली list पर आ गए हैं यानि is a पर आ गए हैं अब इसके अलावा हम remove कर सकते हैं किसी element को ढूंड कर भी यानि अगर हम ये last वाले दो remove हटा दें और लिखें list.remove उसके अंदर कोई index पास करें यानि अगर हमें 0th index वाली value remove करनी है तो वो पास कर दें first index वाली remove करनी है तो वो पास कर दें तो वो हम पास कर सकते हैं माल लीजिए हमें third index वाली value जो है delete करनी है और उसके बाद अपनी list को print करवाना है तो अपने code को अगर हम run करेंगे, तो last में हमारे link list के अंदर this is a list, 4 values available थी, अब हमने third index, यानि ये list वाली, last वाली value को delete कर दिया, तो this is अब चुकिया, तो इस तरीके से हम remove भी कर सकते हैं, और, भी कुछ-कुछ फंक्शंस है उनके बारे में हम जाकर खुद से सीख सकते हैं लिंक लिस्ट के अंदर पर मेजर जो फंक्शंस है जो हमारी प्लेसमेंट की तैयारी में सारे क्वेश्चन सॉल्ड करने की तैयारी में यूज होते हैं उनको आपने कवर कर लिया है इन स आपका आधी हो गया है नीचे डिस्क्रिप्शन बॉक्स में लिंक जो है नोट का उसके अंदर कुछ-कुछ क्वेश्चन भी होंगे उन क्वेश्चन को हम जाकर सॉल्व कर सकते हैं अगले वाली जो क्लास होगी लिंग्स की उसके अंदर भी हम काफी सारे