সার্কুলার লিংকড লিস্টের শেষে নতুন নোড ইনসার্ট করতে হলে একটি '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_at_end(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 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()
print("Nodes are being added to end of list")
my_cl.add_at_end(21)
my_cl.print_it()
my_cl.add_at_end(53)
my_cl.print_it()
my_cl.add_at_end(76)
my_cl.print_it()
আউটপুট
Nodes are being added to end of list 21 21 53 21 53 76
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'add_at_end' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের শেষে, অর্থাৎ 'tail' নোডের পরে ডেটা যোগ করতে ব্যবহৃত হয়।
- 'print_it' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের নোডগুলো ডিসপ্লে করে।
- 'list_creation' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
- একটি 'init' মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের প্রথম এবং লাস্ট নোডকে None সেট করে।
- 'add_at_end' মেথডটি কল করা হয়েছে।
- এটি লিংকড লিস্টের টেল পায়, এর পরে একটি এলিমেন্ট যোগ করে, এবং এর অ্যাড্রেস হেড পয়েন্টার এবং প্রিভিয়াস পয়েন্টারকে রেফারেন্স করে।
- 'print_it' মেথড ব্যবহার করে কনসোলে এটি ডিসপ্লে করা হয়।