m2skills

dll python

May 31st, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.70 KB | None | 0 0
  1. # program to implement Doubly Linked List
  2. class DoublyLinkedList:
  3.     def __init__(self):
  4.         self.head = None
  5.         self.tail = None
  6.  
  7.     # returns true is DoublyLinkedList is Empty
  8.     def isEmpty(self):
  9.         if self.head is None:
  10.             return True
  11.         else:
  12.             return False
  13.  
  14.     # method adds elements to the left of the Linked List
  15.     def addToStart(self, data):
  16.         # create a temporary node
  17.         tempNode = Node(data)
  18.         if self.head is not None:
  19.             tempNode.setNextLink(self.head)
  20.             self.head.setPrevLink(tempNode)
  21.             self.head = tempNode
  22.         elif self.head is None:
  23.             self.head = tempNode
  24.             self.tail = tempNode
  25.  
  26.         del tempNode
  27.  
  28.     # method adds elements to the right of the Linked List
  29.     def addToEnd(self, data):
  30.         end = self.tail
  31.         tempNode = Node(data)
  32.         end.setNextLink(tempNode)
  33.         tempNode.setPrevLink(end)
  34.         self.tail = tempNode
  35.         del tempNode
  36.         return True
  37.  
  38.     # method displays Linked List
  39.     def display(self):
  40.         start = self.head
  41.         if start is None:
  42.             print("Empty List!!!")
  43.             return False
  44.  
  45.         while start:
  46.             print(str(start.getData()), end=" ")
  47.             start = start.getNextNode()
  48.             if start:
  49.                 print("<-->", end=" ")
  50.         print()
  51.  
  52.    
  53. # node class
  54. class Node:
  55.     # default value of data and prevlink and nextLink is none if no data is passed
  56.     def __init__(self, data=None, prevlink=None, nextLink=None):
  57.         self.data = data
  58.         self.prevlink = prevlink
  59.         self.nextLink = nextLink
  60.  
  61.     # method to update the data feild of Node
  62.     def updateData(self, data):
  63.         self.data = data
  64.  
  65.     # method to set prevlink feild the Node
  66.     def setPrevLink(self, node=None):
  67.         self.prevlink = node
  68.  
  69.     # method to set nextlink feild the Node
  70.     def setNextLink(self, node=None):
  71.         self.nextLink = node
  72.  
  73.     # method returns data feild of the Node
  74.     def getData(self):
  75.         return self.data
  76.  
  77.     # method returns address of the next Node
  78.     def getNextNode(self):
  79.         return self.nextLink
  80.  
  81.     # method returns address of the next Node
  82.     def getPreviousNode(self):
  83.         return self.prevlink
  84.  
  85.  
  86. # main method
  87. # creating DoublyLinkedList
  88. myList = DoublyLinkedList()
  89.  
  90. # adding some elements to the start of LinkedList
  91. myList.addToStart(5)
  92. myList.addToStart(4)
  93. myList.addToStart(3)
  94. myList.addToStart(2)
  95. myList.addToStart(1)
  96.  
  97.  
  98. myList.display()
  99.  
  100. # adding some elements to the End of the DoublyLinkedList
  101. myList.addToEnd(12)
  102. myList.addToEnd(13)
  103. myList.addToEnd(3)
  104. myList.display()
Add Comment
Please, Sign In to add comment