সার্কুলার লিংকড লিস্টের শুরুতে নতুন নোড ইনসার্ট করতে হলে একটি '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_beginning(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:
temp = self.head
new_node.next = temp
self.head = 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("Values are being added to the list")
my_cl.add_at_beginning(21)
my_cl.print_it()
my_cl.add_at_beginning(53)
my_cl.print_it()
my_cl.add_at_beginning(76)
my_cl.print_it()
আউটপুট
Values are being added to the list 21 53 21 76 53 21
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'add_at_beginning' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের শুরুতে, অর্থাৎ 'head' নোডের আগে ডেটা যোগ করতে ব্যবহৃত হয়।
- 'print_it' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের নোডগুলো ডিসপ্লে করে।
- 'list_creation' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
- একটি 'init' মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের প্রথম এবং লাস্ট নোডকে None সেট করে।
- 'add_at_beginning' মেথডটি কল করা হয়েছে।
- এটি লিংকড লিস্টের হেড পায়, এর আগে একটি এলিমেন্ট যোগ করে, এবং এর অ্যাড্রেস টেল পয়েন্টার এবং নেক্সট পয়েন্টারকে রেফারেন্স করে।
- 'print_it' মেথড ব্যবহার করে কনসোলে এটি ডিসপ্লে করা হয়।