সার্কুলার লিংকড লিস্টের শেষে থেকে নোড ডিলিট করতে হলে একটি 'Node' ক্লাস তৈরি করতে হয়। এই ক্লাসে দুটি অ্যাট্রিবিউট থাকে: নোডে থাকা ডেটা এবং লিংকড লিস্টের পরবর্তী নোডে অ্যাক্সেস।
সার্কুলার লিংকড লিস্টে হেড এবং রিয়ার একে অপরকে স্পর্শ করে। তারা একটি সার্কেল গঠন করে, এবং লাস্ট নোডে 'NULL' ভ্যালু থাকে না।
একটি 'linked_list' ক্লাস তৈরি করতে হয় যাতে একটি ইনিশিয়ালাইজেশন ফাংশন থাকে, এবং নোডের হেড 'None'-এ ইনিশিয়ালাইজ করা হয়।
নিচে ডেমোстран্স্ট্রেশন দেওয়া হলো:
উদাহরণ
class Node:
def __init__(self, data):
self.data = data
self.next = None
class linked_list:
def __init__(self):
self.head = Node(None)
self.tail = Node(None)
self.head.next = self.tail
self.tail.next = self.head
def add_value(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 delete_from_end(self):
if self.head is None:
return
else:
if self.head != self.tail:
curr = self.head
while curr.next != self.tail:
curr = curr.next
self.tail = curr
self.tail.next = self.head
else:
self.head = self.tail = None
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_list:
my_cl = linked_list()
my_cl.add_value(11)
my_cl.add_value(32)
my_cl.add_value(43)
my_cl.add_value(57)
print("The original list is :")
my_cl.print_it()
while my_cl.head is not None:
my_cl.delete_from_end()
print("The list after deletion is :")
my_cl.print_it()
আউটপুট
The original list is : 11 32 43 57 The list after deletion is : 11 32 43 The list after deletion is : 11 32 The list after deletion is : 11 The list after deletion is : The list is empty
ব্যাখ্যা
- 'Node' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি 'linked_list' ক্লাস তৈরি করা হয়েছে।
- 'add_data' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টে ডেটা যোগ করতে ব্যবহৃত হয়।
- 'delete_from_end' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা রেফারেন্স রিমুভ করে একে একে শেষ থেকে এলিমেন্ট ডিলিট করে।
- 'print_it' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিংকড লিস্টের ডেটা কনসোলে ডিসপ্লে করতে ব্যবহৃত হয়।
- 'linked_list' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
- 'print_it' মেথড ব্যবহার করে কনসোলে এটি ডিসপ্লে করা হয়।