লিঙ্ক করা তালিকায় একটি চক্র শনাক্ত করার প্রয়োজন হলে, লিঙ্ক করা তালিকায় উপাদান যোগ করার একটি পদ্ধতি এবং লিঙ্ক করা তালিকায় উপাদান পেতে একটি পদ্ধতি সংজ্ঞায়িত করা হয়। আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয় যা চেক করে যে মাথা এবং পিছনের মান একই কিনা। এই ফলাফলের উপর ভিত্তি করে, চক্র সনাক্ত করা হয়।
নীচে একই −
এর জন্য একটি প্রদর্শন রয়েছে৷উদাহরণ
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' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা লিঙ্ক করা তালিকায় বর্তমান নোডের মান পেতে সাহায্য করে।
-
'চেক_সাইকেল' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, এটি মাথা এবং পিছন একই কিনা তা খুঁজে পেতে সাহায্য করে, যার মানে এটি একটি চক্র হবে।
-
এটি চক্রের উপস্থিতি বা অনুপস্থিতির উপর নির্ভর করে সত্য বা মিথ্যা ফেরত দেয়।
-
'লিঙ্কডলিস্ট_স্ট্রাকচার'-এর একটি উদাহরণ তৈরি করা হয়েছে।
-
উপাদানগুলি লিঙ্ক করা তালিকায় যোগ করা হয়৷
৷ -
এই লিঙ্ক করা তালিকায় 'চেক_সাইকেল' পদ্ধতি বলা হয়।
-
আউটপুট কনসোলে প্রদর্শিত হয়।