पायथन में एक लिंक्ड सूची को कैसे लागू किया जाए?



यह आलेख दिखाता है कि आप अद्यतन सम्मिलित करने और लिंक की गई सूची में तत्वों को निकालने के लिए विभिन्न तरीकों से अजगर में एक लिंक की गई सूची कैसे बना सकते हैं।

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

चलो शुरू करें!!





कैसे जावा में कार्यक्रम से बाहर निकलने के लिए - -

लिंक्ड सूची क्या है?

लिंक सूची एक समान डेटा प्रकार वाले नोड्स का एक क्रम है, प्रत्येक नोड में अगले नोड में एक डेटा ऑब्जेक्ट और पॉइंटर होता है।

एक लिंक की गई सूची कई नोड्स के संग्रह के साथ एक रैखिक डेटा संरचना है। कहां ईach तत्व अपने स्वयं के डेटा और एक पॉइंटर को अगले तत्व के स्थान पर संग्रहीत करता है। एक लिंक की गई सूची में अंतिम लिंक शून्य की ओर इशारा करता है, श्रृंखला के अंत का संकेत देता है। किसी लिंक की गई सूची में एक तत्व को कहा जाता है नोड । पहले नोड को कहा जाता है सिर अंतिम नोड को कहा जाता है पूँछ
लिंक्ड लिस्ट - अजगर में लिस्टेड लिस्ट - edurekaमानक अजगर पुस्तकालय में एक लिंक्ड सूची नहीं है। हम नोड्स की अवधारणा का उपयोग करके लिंक सूची डेटा संरचना की अवधारणा को लागू कर सकते हैं।



अब हमने सीखा कि क्या लिंक किया गया है। इसलिए लिंक की गई सूची को लागू करने के लिए आगे बढ़ें।

एक लिंक्ड सूची को लागू करना

लिंक्ड सूची बनाने के लिए, हम एक नोड ऑब्जेक्ट बनाते हैं और इस नोड ऑब्जेक्ट का उपयोग करने के लिए एक और वर्ग बनाते हैं।
नोड वर्ग बनाने के लिए कोड।
उपरोक्त कार्यक्रम तीन डेटा तत्वों के साथ एक लिंक की गई सूची बनाता है।

क्लास नोड (ऑब्जेक्ट): # कंस्ट्रक्टर क्लास वेरिएबल्स को डिफाइलाइज करने के लिए __init __ (सेल्फ, डेटा = कोई नहीं, next_node = कोई नहीं): self.data = data self.next_node = next_ode #get data def get_data (सेल्फ): सेल्फोडाटा # वापस करें अगला मान प्राप्त करें get_next (सेल्फ): self.next_node # सेट करें अगला डेटा डिफ सेट set_next (सेल्फ, new_next): self.next_node = new_next

लिंक सूची के कार्यान्वयन में लिंक की गई सूची में निम्नलिखित कार्यक्षमता शामिल है
एक। सम्मिलित करें : यह विधि एक लिंक की गई सूची में एक नया नोड सम्मिलित करेगी।
२। आकार : यह विधि लिंक की गई सूची के आकार को वापस कर देगी।
३। खोज : यह विधि डेटा युक्त नोड लौटाएगी, अन्यथा त्रुटि उत्पन्न होगी
चार। हटा दें : यह विधि डेटा वाले नोड को हटा देगी, अन्यथा त्रुटि उत्पन्न करेगी



लिंक्ड सूची के तरीके देखते हैं

लिंक की गई सूची में इनिट विधि

क्लास लिंक्डलिस्ट (ऑब्जेक्ट): __init __ (आत्म, सिर = कोई नहीं) को परिभाषित करें: स्वयं। सिर = सिर

इनिट विधि का उपयोग ए के प्रारंभ के लिए किया जाता है कक्षा यदि सूची में कोई नोड नहीं है तो परिवर्तनशील है।

सम्मिलित करें:

def इन्सर्ट (सेल्फ, डेटा): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

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

आकार

# सूची डीफ़ साइज़ (स्व) में नोड की कुल संख्या लौटाता है: करंट = स्व.हेड काउंट = 0 जबकि करंट: काउंट + = 1 करंट = करंट / वर्तमान_गेट () रिटर्न काउंट

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

खोज

# नोडडेटा होने वाली सूची में नोड लौटाता है, यदि नोड डिफ सर्च (स्वयं, नोडडेटा) को प्रस्तुत नहीं करता है, तो त्रुटि: वर्तमान = स्व.प्रतिष्ठित = गलत है जबकि वर्तमान और isPresent गलत है: यदि current.get.data () == नोडडेटा: isPresent = सही अन्य: current = current.get_next () यदि करंट कोई नहीं है: ValueError बढ़ाएँ ('सूची में मौजूद डेटा नहीं)' करंट लौटाएँ

खोज वास्तव में आकार के समान है, लेकिन नोड्स की पूरी सूची को ट्रेस करने के बजाय यह प्रत्येक स्टॉप पर यह देखने के लिए जांचता है कि वर्तमान नोड में अनुरोधित डेटा है या नहीं। यदि ऐसा है, तो उस डेटा को पकड़े हुए नोड लौटाता है। यदि विधि पूरी सूची से गुजरती है, लेकिन फिर भी डेटा नहीं मिला है, तो यह एक मूल्य त्रुटि उठाती है और उपयोगकर्ता को सूचित करती है कि डेटा सूची में नहीं है।

हटा दें

# नोड को हटाए गए डिलीट (स्व, नोडडेटा) से न होने पर, लिंक की गई लिस्ट रिटर्न से नोड को हटाएं: current = self.head पिछला = कोई नहीं .Present = वर्तमान और isPresent का गलत होना गलत है: यदि current.get_data () == नोडडेट: isPresent = सही: पिछला = वर्तमान वर्तमान = current.get_next () यदि वर्तमान कोई नहीं है: मान बढ़ाएँ ('सूची में डेटा मौजूद नहीं है') यदि पिछला कोई नहीं है: self.head = current.get_next () और: पिछला: .set_next ( current.get_next ())

डिलीट मेथड उसी लिस्ट को ट्रेस करता है जिस तरह से सर्च करता है, लेकिन करंट नोड का ट्रैक रखने के अलावा, डिलीट मेथड भी याद रहता है कि लास्ट नोड विजिट किया गया है। जब हटाना अंत में नोड पर आता है तो वह हटाना चाहता है। यह बस 'लीपफ्रॉगिंग' द्वारा श्रृंखला से उस नोड को हटा देता है।

झांकी में डेटा सम्मिश्रण क्या है

इससे मेरा मतलब है कि जब डिलीट विधि उस नोड तक पहुंचती है जिसे वह हटाना चाहता है, तो यह उस अंतिम नोड को देखता है जो (and पिछले 'नोड) का दौरा करता है और पिछले नोड के पॉइंटर को रीसेट करता है। जल्द-से-हटाए गए नोड को इंगित करने के बजाय।

यह लाइन में अगले नोड को इंगित करेगा। चूंकि कोई नोड हटाए जा रहे खराब नोड की ओर इशारा नहीं कर रहा है, इसलिए इसे सूची से प्रभावी रूप से हटा दिया गया है!

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

यदि आपको यह लेख 'लिंक्ड लिस्ट इन पाइथन' से संबंधित है, तो प्रासंगिक देखें दुनिया भर में फैले 250,000 से अधिक संतुष्ट शिक्षार्थियों के नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी।

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

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