Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

सर्कुलर लिंक्ड लिस्ट के बीच से एक नोड को हटाने के लिए पायथन प्रोग्राम

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

एक वृत्ताकार लिंक्ड सूची में, सिर और पिछला एक दूसरे से सटे हुए होते हैं। वे एक मंडली बनाने के लिए जुड़े हुए हैं, और अंतिम नोड में 'NULL' मान नहीं है।

एक और वर्ग बनाने की जरूरत है जिसमें प्रारंभिक कार्य होगा, और नोड के प्रमुख को 'कोई नहीं' में प्रारंभ किया जाएगा। आकार चर 0 से प्रारंभ किया गया है।

ऐसे उपयोगकर्ता परिभाषित कार्य होंगे जो लिंक की गई सूची में नोड जोड़ने में मदद करते हैं, उन्हें कंसोल पर प्रिंट करते हैं, और मध्य अनुक्रमणिका से एक नोड को हटाते हैं।

नीचे उसी के लिए एक प्रदर्शन है -

उदाहरण

class Node:  
   def __init__(self,data):  
      self.data = data;  
      self.next = None;  
   
class list_creation:  
   def __init__(self):  
      self.head = Node(None);  
      self.tail = Node(None);  
      self.head.next = self.tail;  
      self.tail.next = self.head;  
      self.size = 0;  
     
   def add_data(self,my_data):  
      new_node = Node(my_data);  
      if self.head.data is None:  
         self.head = new_node;  
         self.tail = new_node;  
         new_node.next = self.head;  
      else:  
         self.tail.next = new_node;  
         self.tail = new_node;  
         self.tail.next = self.head;  
      self.size = int(self.size)+1;  
     
   def delete_from_mid(self):  
      if(self.head == None):  
         return;  
      else:  
         count = (self.size//2) if (self.size % 2 == 0) else ((self.size+1)//2);  
         if( self.head != self.tail ):  
            temp = self.head;  
            curr = None;  
            for i in range(0, count-1):  
               curr = temp;  
               temp = temp.next;  
            if(curr != None):  
               curr.next = temp.next;  
               temp = None;  
            else:  
               self.head = self.tail = temp.next;  
               self.tail.next = self.head;  
               temp = None;  
         else:  
            self.head = self.tail = None;  
      self.size = self.size - 1;  
           
   def print_it(self):  
      curr = self.head;  
      if self.head is None:  
         print("The list is empty");  
         return;  
      else:  
         print(curr.data),  
         while(curr.next != self.head):  
            curr = curr.next;  
            print(curr.data),  
         print("\n");  
   
class circular_linked_list:  
   my_cl = list_creation()  
   my_cl.add_data(11)  
   my_cl.add_data(52)  
   my_cl.add_data(36)  
   my_cl.add_data(74)
   print("The original list is :")
   my_cl.print_it()
   while(my_cl.head != None):  
      my_cl.delete_from_mid()
      print("The list after updation is :")
      my_cl.print_it();

आउटपुट

The original list is :
11
52
36
74

The list after updation is :
11
36
74

The list after updation is :
11
74

The list after updation is :
74

The list after updation is :
The list is empty

स्पष्टीकरण

  • 'नोड' वर्ग बनाया गया है।
  • आवश्यक विशेषताओं वाला एक और वर्ग बनाया गया है।
  • 'add_data' नाम की एक अन्य विधि परिभाषित की गई है, जिसका उपयोग सर्कुलर लिंक्ड सूची में डेटा जोड़ने के लिए किया जाता है।
  • 'delete_from_middle' नाम की एक और विधि परिभाषित की गई है, जो इसके संदर्भ को हटाकर एक-एक करके तत्वों को बीच से हटाती है।
  • 'print_it' नामक एक अन्य विधि को परिभाषित किया गया है जिसका उपयोग कंसोल पर लिंक की गई सूची डेटा प्रदर्शित करने के लिए किया जाता है।
  • 'list_creation' वर्ग का एक ऑब्जेक्ट बनाया जाता है, और उस पर डेटा जोड़ने के तरीकों को बुलाया जाता है।
  • 'delete_from_middle' विधि कहलाती है।
  • यह लिंक की गई सूची में नोड्स के माध्यम से पुनरावृति करता है, सबसे मध्य सूचकांक प्राप्त करता है और तत्वों को हटाना शुरू करता है।
  • यह 'print_it' पद्धति का उपयोग करके कंसोल पर प्रदर्शित होता है।

  1. एक परिपत्र लिंक्ड सूची में एक तत्व खोजने के लिए पायथन कार्यक्रम

    जब सर्कुलर लिंक्ड सूची में किसी तत्व की खोज करने की आवश्यकता होती है, तो एक नोड वर्ग बनाने की आवश्यकता होती है। इस वर्ग में, दो विशेषताएँ हैं, डेटा जो नोड में मौजूद है, और लिंक्ड सूची के अगले नोड तक पहुँच है। एक वृत्ताकार लिंक्ड सूची में, सिर और पिछला एक दूसरे से सटे हुए होते हैं। वे एक सर्कल बनाने

  1. पायथन में एकल लिंक की गई सूची के मध्य नोड को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक एकल लिंक्ड सूची नोड है, हमें मध्य नोड का मान ज्ञात करना है। और जब दो मध्य नोड होंगे, तो हम दूसरे को वापस कर देंगे। हमें इसे सिंगल पास में हल करने का प्रयास करना होगा। इसलिए, अगर इनपुट [5,9,6,4,8,2,1,4,5,2] जैसा है, तो आउटपुट 2 होगा। इसे हल करने के लिए, हम इन चरणों का पालन

  1. पायथन में एक लिंक्ड सूची में नोड हटाएं

    मान लीजिए कि हमारे पास कुछ तत्वों के साथ एक लिंक्ड सूची है। हमारा काम एक फ़ंक्शन लिखना है जो दिए गए नोड को सूची से हटा देगा। तो अगर सूची 1 → 3 → 5 → 7 → 9 की तरह है, और 3 को हटाने के बाद, यह 1 → 5 → 7 → 9 होगा। मान लें कि हमारे पास पॉइंटर नोड है जो इंगित करता है कि नोड को हटाया जाना है, हमें नोड को