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