সার্কুলার লিঙ্কড লিস্টে একটি এলিমেন্ট অনুসন্ধান করার জন্য প্রথমে একটি Node ক্লাস তৈরি করতে হয়। এই ক্লাসের দুটি অ্যাট্রিবিউট থাকে: নোডে থাকা ডেটা এবং লিঙ্কড লিস্টের পরবর্তী নোডের রেফারেন্স।
সার্কুলার লিঙ্কড লিস্টে হেড (head) এবং টেইল (tail) একে অপরের সাথে সংযুক্ত থাকে, ফলে এটি একটি বৃত্ত আকার ধারণ করে এবং শেষ নোডে NULL মান থাকে না। একটি অন্য ক্লাস তৈরি করতে হয় যার ইনিশিয়ালাইজেশন ফাংশনে হেড নোডকে None দিয়ে ইনিশিয়ালাইজ করা হয়।
ব্যবহারকারী লিঙ্কড লিস্টে নোড যোগ করার জন্য, নির্দিষ্ট নোড অনুসন্ধানের জন্য এবং নোডের মান প্রিন্ট করার জন্য একাধিক মেথড সংজ্ঞায়িত করে।
নিচে এর একটি উদাহরণ দেওয়া হলো:
উদাহরণ
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
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
def search_value(self, elem_to_search):
curr = self.head
i = 1
flag_val = False
if self.head is None:
print("লিস্টটি খালি")
else:
while True:
if curr.data == elem_to_search:
flag_val = True
break
curr = curr.next
i += 1
if curr == self.head:
break
if flag_val:
print("এলিমেন্টটি লিস্টে " + str(i) + " নম্বর পজিশনে আছে")
else:
print("এলিমেন্টটি লিস্টে নেই")
def print_it(self):
curr = self.head
if self.head is None:
print("লিস্টটি খালি")
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()
print("লিস্টে নোড যোগ করা হচ্ছে")
my_cl.add_data(21)
my_cl.add_data(54)
my_cl.add_data(78)
my_cl.add_data(99)
my_cl.add_data(27)
print("লিস্টটি হলো:")
my_cl.print_it()
print("৯৯ মানটি অনুসন্ধান করা হচ্ছে")
my_cl.search_value(99)
print("০ মানটি অনুসন্ধান করা হচ্ছে")
my_cl.search_value(0)
আউটপুট
লিস্টে নোড যোগ করা হচ্ছে লিস্টটি হলো: 21 54 78 99 27 ৯৯ মানটি অনুসন্ধান করা হচ্ছে এলিমেন্টটি লিস্টে 4 নম্বর পজিশনে আছে ০ মানটি অনুসন্ধান করা হচ্ছে এলিমেন্টটি লিস্টে নেই
ব্যাখ্যা
- Node ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
search_valueনামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিঙ্কড লিস্টে নির্দিষ্ট এলিমেন্ট অনুসন্ধান করে।print_itনামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিঙ্কড লিস্টের নোডগুলো প্রদর্শন করে।list_creationক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে এবং ডেটা যোগ করার জন্য এর মেথডগুলো কল করা হয়েছে।- একটি
initমেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিঙ্কড লিস্টের প্রথম এবং শেষ নোডকেNoneদিয়ে ইনিশিয়ালাইজ করে। search_valueমেথডটি কল করা হয়েছে।- এটি লিস্টের মাধ্যমে ইটারেট করে এবং খুঁজে বের করার জন্য দরকার এলিমেন্টটি পাওয়া গেলে তা চেক করে।
- যদি পাওয়া যায়, তবে এর ইনডেক্স প্রদর্শন করা হয়।
- এটি কনসোলে
print_itমেথড ব্যবহার করে প্রদর্শিত হয়।