সার্কুলার লিংকড লিস্টের মাঝপথ থেকে নোড ডিলিট করতে হলে একটি '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
self.size = 0
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
self.size = int(self.size) + 1
def delete_from_mid(self):
if self.head is None:
return
else:
count = (self.size // 2) if (self.size % 2 == 0) else ((self.size + 1) // 2)
if self.head != self.tail:
temp = self.head
curr = None
for i in range(0, count - 1):
curr = temp
temp = temp.next
if curr is not None:
curr.next = temp.next
temp = None
else:
self.head = self.tail = temp.next
self.tail.next = self.head
temp = None
else:
self.head = self.tail = None
self.size = self.size - 1
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()
my_cl.add_data(11)
my_cl.add_data(52)
my_cl.add_data(36)
my_cl.add_data(74)
print("The original list is :")
my_cl.print_it()
while my_cl.head is not None:
my_cl.delete_from_mid()
print("The list after updation is :")
my_cl.print_it()
আউটপুট
The original list is : 11 52 36 74 The list after updation is : 11 36 74 The list after updation is : 11 74 The list after updation is : 74 The list after updation is : The list is empty
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'add_data' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টে ডেটা যোগ করতে ব্যবহৃত হয়।
- 'delete_from_middle' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা রেফারেন্স রিমুভ করে একে একে মাঝখান থেকে এলিমেন্ট ডিলিট করে।
- 'print_it' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিংকড লিস্টের ডেটা কনসোলে ডিসপ্লে করতে ব্যবহৃত হয়।
- 'list_creation' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
- 'delete_from_middle' মেথডটি কল করা হয়েছে।
- এটি লিংকড লিস্টের নোডগুলোতে ইটারেট করে, মাঝখানের ইন্ডেক্স বের করে এবং এলিমেন্টগুলো ডিলিট করা শুরু করে।
- 'print_it' মেথড ব্যবহার করে কনসোলে এটি ডিসপ্লে করা হয়।