Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, data, prev=None, next=None):
- self.data = data
- self.prev = prev
- self.next = next
- def __str__(self):
- return str(self.data)
- class DLL:
- def __init__(self, head):
- self.head = head
- def addFront(self, data):
- new_node = Node(data)
- new_node.next = self.head
- if self.head:
- self.head.prev = new_node
- self.head = new_node
- def insertAfter(self, prev_node, new_data):
- if prev_node is None:
- raise Exception("prev_node must be specified!")
- new_node = Node(new_data)
- new_node.next = prev_node.next
- new_node.prev = prev_node
- if prev_node.next:
- prev_node.next.prev = new_node
- prev_node.next = new_node
- def append(self, data):
- new_node = Node(data)
- if not self.head:
- self.head = new_node
- return
- cur_node = self.head
- while cur_node.next:
- cur_node = cur_node.next
- cur_node.next = new_node
- new_node.prev = cur_node
- def insertBefore(self, next_node, data):
- new_node = Node(data)
- if next_node is None:
- raise Exception('next_node is not provided!')
- new_node.next = next_node
- new_node.prev = next_node.prev
- next_node.prev = new_node
- if new_node.prev:
- new_node.prev.next = new_node
- def __traverse(self, node):
- if node:
- print("{} === {} === {}".format(node.prev, node.data, node.next))
- self.__traverse(node.next)
- def traverse(self):
- self.__traverse(self.head)
- n1 = Node(4)
- dll = DLL(n1)
- dll.addFront(3)
- dll.addFront(56)
- dll.addFront(32)
- dll.insertAfter(n1, 23)
- dll.insertAfter(n1, 22)
- dll.traverse()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement