সার্কুলার লিংকড লিস্ট থেকে ম্যাক্সিমাম এবং মিনিমাম নোড ভ্যালু বের করতে হলে একটি 'Node' ক্লাস তৈরি করতে হয়। এই ক্লাসে দুটি অ্যাট্রিবিউট থাকে: নোডে থাকা ডেটা এবং লিংকড লিস্টের পরবর্তী নোডে অ্যাক্সেস।
সার্কুলার লিংকড লিস্টে হেড এবং রিয়ার একে অপরকে স্পর্শ করে। তারা একটি সার্কেল গঠন করে, এবং লাস্ট নোডে '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 find_min_node(self):
curr = self.head
min_val = self.head.data
if self.head is None:
print("The list is empty")
else:
while True:
if min_val > curr.data:
min_val = curr.data
curr = curr.next
if curr == self.head:
break
print("Minimum value node in the list: " + str(min_val))
def find_max_node(self):
curr = self.head
max_val = self.head.data
if self.head is None:
print("List is empty")
else:
while True:
if max_val < curr.data:
max_val = curr.data
curr = curr.next
if curr == self.head:
break
print("The maximum value node is : " + str(max_val))
class circular_linked_list:
my_cl = list_creation()
print("Values have been added to the list")
my_cl.add_data(11)
my_cl.add_data(52)
my_cl.add_data(36)
my_cl.add_data(74)
my_cl.find_max_node()
my_cl.find_min_node()
আউটপুট
Values have been added to the list The maximum value node is : 74 Minimum value node in the list: 11
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'add_data' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টে ডেটা যোগ করতে ব্যবহৃত হয়।
- 'find_max_node' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিস্টের মাধ্যমে ইটারেট করে নোডে ম্যাক্সিমাম ভ্যালু বের করে।
- 'find_min_node' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিস্টের মাধ্যমে ইটারেট করে নোডে মিনিমাম ভ্যালু বের করে।
- 'list_creation' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
- একটি 'init' মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের প্রথম এবং লাস্ট নোডকে None সেট করে।
- 'find_max_node' এবং 'find_min_node' মেথডগুলো কল করা হয়েছে।
- এটি লিংকড লিস্টের নোডগুলোতে ইটারেট করে, লিস্টে ম্যাক্সিমাম এবং মিনিমাম ভ্যালু বের করে।
- এটি কনসোলে ডিসপ্লে করা হয়।