arikSarkar

DoublyLinkedList

Sep 23rd, 2017
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.93 KB | None | 0 0
  1. # DOUBLE LINKED LINKED IMPLEMENTATION
  2.  
  3. class Node:
  4.  
  5.     def __init__ (self, d, n = None, p = None):
  6.         self.data = d
  7.         self.next_node = n
  8.         self.prev_node = p
  9.  
  10.     def get_next (self):
  11.         return self.next_node
  12.  
  13.     def set_next (self, n):
  14.         self.next_node = n
  15.  
  16.     def get_prev (self):
  17.         return self.prev_node
  18.  
  19.     def set_prev (self, p):
  20.         self.prev_node = p
  21.  
  22.     def get_data (self):
  23.         return self.data
  24.  
  25.     def set_data (self, d):
  26.         self.data = d
  27.  
  28.  
  29. class LinkedList:
  30.  
  31.     def __init__(self, r = None):
  32.         self.root = r
  33.         self.size = 0
  34.  
  35.     def get_size (self):
  36.         return self.size
  37.  
  38.     def add (self, d):
  39.         new_node = Node (d, self.root)
  40.         if self.root:
  41.             self.root.set_prev(new_node)
  42.         self.root = new_node
  43.         self.size += 1
  44.  
  45.     def remove (self, d):
  46.         this_node = self.root
  47.  
  48.         while this_node:
  49.             if this_node.get_data() == d:
  50.                 next = this_node.get_next()
  51.                 prev = this_node.get_prev()
  52.                
  53.                 if next:
  54.                     next.set_prev(prev)
  55.                 if prev:
  56.                     prev.set_next(next)
  57.                 else:
  58.                     self.root = this_node
  59.                 self.size -= 1
  60.                 return True     # data removed
  61.             else:
  62.                 this_node = this_node.get_next()
  63.         return False  # data not found
  64.  
  65.     def find (self, d):
  66.         this_node = self.root
  67.         while this_node:
  68.             if this_node.get_data() == d:
  69.                 return d
  70.             else:
  71.                 this_node = this_node.get_next()
  72.         return None
  73.  
  74. myList = LinkedList()
  75. myList.add(5)
  76. myList.add(8)
  77. myList.add(4)
  78. myList.add(1)
  79. myList.add(23)
  80. myList.add(10)
  81. myList.add(12)
  82. myList.remove(8)
  83. myList.remove(1)
  84. print(myList.remove(10))
  85. print(myList.find(1))
  86. print(myList.find(4))
Add Comment
Please, Sign In to add comment