जब दोहरी लिंक की गई सूची के बीच से किसी नोड को हटाना आवश्यक होता है, तो एक 'नोड' वर्ग बनाने की आवश्यकता होती है। इस वर्ग में, तीन विशेषताएं हैं, डेटा जो नोड में मौजूद है, लिंक की गई सूची के अगले नोड तक पहुंच और लिंक की गई सूची के पिछले नोड तक पहुंच है।
एक और वर्ग बनाने की जरूरत है जिसमें एक प्रारंभिक कार्य होगा, और नोड के प्रमुख को इसके अंदर 'कोई नहीं' के लिए प्रारंभ किया जाएगा।
उपयोगकर्ता द्वारा लिंक की गई सूची में नोड जोड़ने, नोड्स प्रदर्शित करने और डबल लिंक की गई सूची के अंत से नोड को हटाने के लिए कई विधियों को परिभाषित किया गया है।
एक डबल लिंक्ड लिस्ट में, नोड्स में पॉइंटर्स होते हैं। वर्तमान नोड में अगले नोड के साथ-साथ पिछले नोड के लिए एक सूचक होगा। सूची में अंतिम मान का अगले सूचक में 'NULL' मान होगा। इसे दोनों दिशाओं में घुमाया जा सकता है।
नीचे उसी के लिए एक प्रदर्शन है -
उदाहरण
वर्ग नोड:def __init__(self, my_data):self.prev =कोई नहीं self.data =my_data self.next =कोई नहीं वर्ग डबल_सूची:def __init__(self):self.head =कोई नहीं self.tail =कोई नहीं self.size =0; def add_data(self, my_data):new_node =Node(my_data) if(self.head ==none):self.head =self.tail =new_node; स्व.सिर.पिछला =कोई नहीं; self.tail.next =कोई नहीं; अन्य:self.tail.next =new_node; new_node.previous =self.tail; स्व.पूंछ =new_node; self.tail.next =कोई नहीं; def print_it(self):curr =self.head if (self.head ==कोई नहीं):प्रिंट ("सूची खाली है") रिटर्न प्रिंट ("दोगुने लिंक की गई सूची में नोड्स हैं:") जबकि curr!=कोई नहीं :प्रिंट (curr.data) curr =curr.next def delete_from_middle(self):if(self.head ==कोई नहीं):वापसी; अन्य:curr =self.head मध्य =(self.size//2) if(self.size% 2 ==0) else((self.size+1)//2) for i in range(1, mid) :curr =curr.next; if(curr ==self.head):self.head =curr.next self.tail.next =कोई नहीं elif(curr ==self.tail):self.tail =self.tail.prev; अन्य:curr.prev.next =curr.next; curr.next.prev =curr.prev; वर्तमान =कोई नहीं; self.size =self.size - 1;my_instance =double_list()print("तत्वों को दोगुनी लिंक की गई सूची में जोड़ा जा रहा है") my_instance.add_data(10)my_instance.add_data(24)my_instance.add_data(54)my_instance.add_data (77) my_instance.add_data (92) my_instance.print_it () जबकि (my_instance.head !=कोई नहीं):my_instance.delete_from_middle (); प्रिंट ("तत्व को बीच से हटाने के बाद की सूची है:") my_instance.print_it( );
आउटपुट
डबल लिंक्ड लिस्ट में एलिमेंट जोड़े जा रहे हैं डबल लिंक्ड लिस्ट में नोड्स हैं:1024547792 बीच से एलिमेंट को डिलीट करने के बाद की लिस्ट है:डबल लिंक्ड लिस्ट में नोड्स हैं:24547792 एलिमेंट को बीच से हटाने के बाद की लिस्ट है :डबल लिंक्ड लिस्ट में नोड्स हैं:547792 बीच से एलिमेंट को डिलीट करने के बाद लिस्ट है:डबल लिंक्ड लिस्ट में नोड्स हैं:7792 एलिमेंट को बीच से डिलीट करने के बाद लिस्ट है:डबल लिंक्ड लिस्ट में नोड्स हैं:92तत्व को बीच से हटाने के बाद की सूची है :सूची खाली हैस्पष्टीकरण
- 'नोड' वर्ग बनाया गया है।
- आवश्यक विशेषताओं वाला एक और वर्ग बनाया गया है।
- 'add_data' नाम की एक विधि परिभाषित की गई है, जिसका उपयोग डबल लिंक्ड सूची में डेटा जोड़ने के लिए किया जाता है।
- 'print_it' नाम की एक अन्य विधि परिभाषित की गई है, जो सर्कुलर लिंक्ड सूची के नोड्स को प्रदर्शित करती है।
- 'delete_from_middle' नामक एक अन्य विधि को परिभाषित किया गया है, जो नोड को बीच से हटाती है, और पिछले नोड को सर्कुलर लिंक्ड सूची में वर्तमान नोड के रूप में बनाती है।
- डबल_लिस्ट' वर्ग का एक ऑब्जेक्ट बनाया जाता है, और डबल लिंक्ड सूची की शुरुआत से नोड को हटाने के लिए विधियों को बुलाया जाता है।
- एक 'init' विधि को परिभाषित किया गया है, कि रूट, हेड, और टेल नोड्स डबल लिंक्ड लिस्ट का कोई नहीं से जुड़ा हुआ है।
- सूची को पुनरावृत्त किया जाता है, और लिंक की गई सूची के मध्य अनुक्रमणिका से प्रत्येक नोड को खाली होने तक हटा दिया जाता है।
- यह 'print_it' पद्धति का उपयोग करके कंसोल पर प्रदर्शित होता है।