Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # DOUBLE LINKED LINKED IMPLEMENTATION
- class Node:
- def __init__ (self, d, n = None, p = None):
- self.data = d
- self.next_node = n
- self.prev_node = p
- def get_next (self):
- return self.next_node
- def set_next (self, n):
- self.next_node = n
- def get_prev (self):
- return self.prev_node
- def set_prev (self, p):
- self.prev_node = p
- def get_data (self):
- return self.data
- def set_data (self, d):
- self.data = d
- class LinkedList:
- def __init__(self, r = None):
- self.root = r
- self.size = 0
- def get_size (self):
- return self.size
- def add (self, d):
- new_node = Node (d, self.root)
- if self.root:
- self.root.set_prev(new_node)
- self.root = new_node
- self.size += 1
- def remove (self, d):
- this_node = self.root
- while this_node:
- if this_node.get_data() == d:
- next = this_node.get_next()
- prev = this_node.get_prev()
- if next:
- next.set_prev(prev)
- if prev:
- prev.set_next(next)
- else:
- self.root = this_node
- self.size -= 1
- return True # data removed
- else:
- this_node = this_node.get_next()
- return False # data not found
- def find (self, d):
- this_node = self.root
- while this_node:
- if this_node.get_data() == d:
- return d
- else:
- this_node = this_node.get_next()
- return None
- myList = LinkedList()
- myList.add(5)
- myList.add(8)
- myList.add(4)
- myList.add(1)
- myList.add(23)
- myList.add(10)
- myList.add(12)
- myList.remove(8)
- myList.remove(1)
- print(myList.remove(10))
- print(myList.find(1))
- print(myList.find(4))
Add Comment
Please, Sign In to add comment