কম্পিউটার

একটি লিঙ্ক করা তালিকায় চক্র সনাক্ত করতে পাইথন প্রোগ্রাম


লিঙ্ক করা তালিকায় একটি চক্র শনাক্ত করার প্রয়োজন হলে, লিঙ্ক করা তালিকায় উপাদান যোগ করার একটি পদ্ধতি এবং লিঙ্ক করা তালিকায় উপাদান পেতে একটি পদ্ধতি সংজ্ঞায়িত করা হয়। আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয় যা চেক করে যে মাথা এবং পিছনের মান একই কিনা। এই ফলাফলের উপর ভিত্তি করে, চক্র সনাক্ত করা হয়।

নীচে একই −

এর জন্য একটি প্রদর্শন রয়েছে৷

উদাহরণ

class Node:
   def __init__(self, data):
      self.data = data
      self.next = None

class LinkedList_structure:
   def __init__(self):
      self.head = None
      self.last_node = None

   def add_vals(self, data):
      if self.last_node is None:
         self.head = Node(data)
         self.last_node = self.head
      else:
         self.last_node.next = Node(data)
         self.last_node = self.last_node.next

def get_node_val(self, index):
   curr = self.head
   for i in range(index):
      curr = curr.next
      if curr is None:
         return None
      return curr

def check_cycle(my_list):
   slow_val = my_list.head
   fast_val = my_list.head
   while (fast_val != None and fast_val.next != None):
      slow_val = slow_val.next
      fast_val = fast_val.next.next
      if slow_val == fast_val:
         return True
      return False

my_linked_list = LinkedList_structure()
my_list = input('Enter the elements in the linked list ').split()
   for elem in my_list:
my_linked_list.add_vals(int(elem))
my_len = len(my_list)
if my_len != 0:
   vals = '0-' + str(my_len - 1)
   last_ptr = input('Enter the index [' + vals + '] of the node' ' at which the last node has to point'' (Enter nothing to point to None): ').strip()
   if last_ptr == '':
      last_ptr = None
   else:
      last_ptr = my_linked_list.get_node_val(int(last_ptr))
      my_linked_list.last_node.next = last_ptr

if check_cycle(my_linked_list):
   print("The linked list has a cycle")
else:
   print("The linked list doesn't have a cycle")

আউটপুট

Enter the elements in the linked list 56 78 90 12 4
Enter the index [0-4] of the node at which the last node has to point (Enter nothing to point to
None):
The linked list doesn't have a cycle

ব্যাখ্যা

  • 'নোড' ক্লাস তৈরি করা হয়েছে।

  • প্রয়োজনীয় গুণাবলী সহ আরেকটি 'LinkedList_structure' ক্লাস তৈরি করা হয়েছে।

  • এটির একটি 'init' ফাংশন রয়েছে যা প্রথম উপাদানটি শুরু করতে ব্যবহৃত হয়, যেমন 'হেড' থেকে 'কোনটি নয়'।

  • 'add_vals' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা স্ট্যাকে একটি মান যোগ করতে সাহায্য করে।

  • 'get_node_val' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা লিঙ্ক করা তালিকায় বর্তমান নোডের মান পেতে সাহায্য করে।

  • 'চেক_সাইকেল' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, এটি মাথা এবং পিছন একই কিনা তা খুঁজে পেতে সাহায্য করে, যার মানে এটি একটি চক্র হবে।

  • এটি চক্রের উপস্থিতি বা অনুপস্থিতির উপর নির্ভর করে সত্য বা মিথ্যা ফেরত দেয়।

  • 'লিঙ্কডলিস্ট_স্ট্রাকচার'-এর একটি উদাহরণ তৈরি করা হয়েছে।

  • উপাদানগুলি লিঙ্ক করা তালিকায় যোগ করা হয়৷

  • এই লিঙ্ক করা তালিকায় 'চেক_সাইকেল' পদ্ধতি বলা হয়।

  • আউটপুট কনসোলে প্রদর্শিত হয়।


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

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

  3. পাইথনে লিংকড লিস্ট সাইকেল

  4. একটি নির্দেশিত গ্রাফে চক্র সনাক্তকরণের জন্য পাইথন প্রোগ্রাম