जब दोहरी लिंक की गई सूची बनाने और तत्वों को उल्टे क्रम में प्रदर्शित करने की आवश्यकता होती है, तो एक 'नोड' वर्ग बनाने की आवश्यकता होती है। इस वर्ग में, तीन विशेषताएं हैं, डेटा जो नोड में मौजूद है, लिंक की गई सूची के अगले नोड तक पहुंच और लिंक की गई सूची के पिछले नोड तक पहुंच है।
एक और वर्ग बनाने की जरूरत है जिसमें एक प्रारंभिक कार्य होगा, और नोड के प्रमुख को इसके अंदर 'कोई नहीं' के लिए प्रारंभ किया जाएगा।
लिंक की गई सूची में नोड जोड़ने, नोड्स को उलटने और लिंक की गई सूची में नोड्स को प्रिंट करने के लिए उपयोगकर्ता द्वारा कई विधियों को परिभाषित किया गया है।
नीचे उसी के लिए एक प्रदर्शन है -
उदाहरण
class Node:
def __init__(self, my_data):
self.prev = None
self.data = my_data
self.next = None
class reverse_list:
def __init__(self):
self.head = None
self.tail = None
def add_data(self, my_data):
new_node = Node(my_data)
if(self.head == None):
self.head = self.tail = new_node;
self.head.previous = None;
self.tail.next = None;
else:
self.tail.next = new_node;
new_node.previous = self.tail;
self.tail = new_node;
self.tail.next = None;
def reverse_vals(self):
curr = self.head;
while(curr != None):
temp = curr.next
curr.next = curr.previous
curr.previous = temp
curr = curr.previous
temp = self.head
self.head = self.tail
self.tail = temp
def print_it(self):
curr = self.head
if (self.head == None):
print("The list is empty")
return
print("The nodes are :")
while curr != None:
print(curr.data)
curr = curr.next
my_instance = reverse_list()
print("Elements are being added to the list")
my_instance.add_data(10)
my_instance.add_data(14)
my_instance.add_data(24)
my_instance.add_data(17)
my_instance.add_data(22)
my_instance.print_it()
print("The reversed nodes in the doubly linked list are : ")
my_instance.reverse_vals()
my_instance.print_it() आउटपुट
Elements are being added to the list The nodes are : 10 14 24 17 22 The reversed nodes in the doubly linked list are : The nodes are : 22 17 24 14 10
स्पष्टीकरण
- 'नोड' वर्ग बनाया गया है।
- आवश्यक विशेषताओं वाला एक और वर्ग बनाया गया है।
- 'add_data' नाम की एक विधि परिभाषित की गई है, जिसका उपयोग डबल लिंक्ड सूची में डेटा जोड़ने के लिए किया जाता है।
- 'reverse_node' नामक एक अन्य विधि को परिभाषित किया गया है, जो डबल लिंक्ड सूची में नोड्स के क्रम को उलटने में मदद करती है।
- 'print_it' नाम की एक अन्य विधि परिभाषित की गई है, जो सर्कुलर लिंक्ड सूची के नोड्स को प्रदर्शित करती है।
- 'reverse_list' वर्ग का एक ऑब्जेक्ट बनाया जाता है, और दोहरी लिंक की गई सूची के नोड्स को उलटने के लिए उस पर विधियों को बुलाया जाता है।
- एक 'init' विधि को परिभाषित किया गया है, कि रूट, हेड, और टेल नोड्स डबल लिंक्ड लिस्ट का कोई नहीं से जुड़ा हुआ है।
- 'reverse_vals' विधि कहलाती है।
- यह दोहरी लिंक की गई सूची के माध्यम से पुनरावृति करता है, और सूची को उलट देता है।
- यह 'print_it' पद्धति का उपयोग करके कंसोल पर प्रदर्शित होता है।