কম্পিউটার

সার্কুলার লিঙ্কড তালিকার মাঝখানে থেকে একটি নোড মুছে ফেলার জন্য পাইথন প্রোগ্রাম


যখন সার্কুলার লিঙ্ক করা তালিকার মাঝখানে থেকে একটি নোড মুছে ফেলার প্রয়োজন হয়, তখন একটি 'নোড' ক্লাস তৈরি করতে হবে। এই ক্লাসে, দুটি বৈশিষ্ট্য রয়েছে, নোডে থাকা ডেটা এবং লিঙ্ক করা তালিকার পরবর্তী নোডে অ্যাক্সেস।

একটি বৃত্তাকার লিঙ্কযুক্ত তালিকায়, মাথা এবং পিছনের অংশ একে অপরের সংলগ্ন। তারা একটি বৃত্ত গঠনের জন্য সংযুক্ত, এবং শেষ নোডে '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' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা কনসোলে লিঙ্ক করা তালিকার ডেটা প্রদর্শন করতে ব্যবহৃত হয়।
  • 'লিস্ট_ক্রিয়েশন' ক্লাসের একটি অবজেক্ট তৈরি করা হয়, এবং ডেটা যোগ করার জন্য পদ্ধতিগুলিকে বলা হয়।
  • 'delete_from_middle' পদ্ধতিটিকে বলা হয়।
  • এটি লিঙ্ক করা তালিকার নোডগুলির মাধ্যমে পুনরাবৃত্তি করে, মধ্যম সর্বাধিক সূচক পায় এবং উপাদানগুলি মুছে ফেলা শুরু করে৷
  • এটি 'print_it' পদ্ধতি ব্যবহার করে কনসোলে প্রদর্শিত হয়।

  1. সার্কুলার লিঙ্কড লিস্টের উপাদানগুলিকে সাজানোর জন্য পাইথন প্রোগ্রাম

  2. বৃত্তাকার লিঙ্কযুক্ত তালিকায় একটি উপাদান অনুসন্ধান করতে পাইথন প্রোগ্রাম

  3. পাইথনে এককভাবে লিঙ্ক করা তালিকার মাঝের নোড খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে লিঙ্কযুক্ত তালিকায় নোড মুছুন