जब सर्कुलर लिंक्ड लिस्ट के अंत से एक नोड डिलीट करने की आवश्यकता होती है, तो एक '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, end=" ")
while curr.next != self.head:
curr = curr.next
print(curr.data, end=" ")
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' मेथड का उपयोग करके कंसोल पर प्रदर्शित होता है।