m2skills

middleLL python

Mar 29th, 2017
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.79 KB | None | 0 0
  1. # program to find the middle node of the Linked List in single traversal
  2.  
  3. class LinkedList:
  4.     def __init__(self):
  5.         self.head = None
  6.  
  7.     # returns true is LinkedList 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.         tempNode.setLink(self.head)
  19.         self.head = tempNode
  20.         del tempNode
  21.  
  22.     # method adds elements to the right of the Linked List
  23.     def addToEnd(self, data):
  24.         start = self.head
  25.         tempNode = Node(data)
  26.         while start.getNextNode():
  27.             start = start.getNextNode()
  28.         start.setLink(tempNode)
  29.         del tempNode
  30.         return True
  31.  
  32.     # method displays Linked List
  33.     def display(self):
  34.         start = self.head
  35.         if start is None:
  36.             print("Empty List!!!")
  37.             return False
  38.            
  39.         while start:
  40.             print(str(start.getData()), end=" ")
  41.             start = start.link
  42.             if start:
  43.                 print("-->", end=" ")
  44.         print()
  45.  
  46.     # method that returns the middle node of the list
  47.     def middleNode(self):
  48.         start = self.head
  49.         slow = self.head
  50.         fast = self.head
  51.         while True:
  52.             if fast.getNextNode():
  53.                 fast = fast.getNextNode()
  54.                 slow = slow.getNextNode()
  55.             else:
  56.                 break
  57.             if fast.getNextNode():
  58.                 fast = fast.getNextNode()
  59.             else:
  60.                 break
  61.  
  62.         return slow.getData()
  63.  
  64.  
  65. # node class
  66. class Node:
  67.     # default value of data and link is none if no data is passed
  68.     def __init__(self, data=None, link=None):
  69.         self.data = data
  70.         self.link = link
  71.  
  72.     # method to update the data feild of Node
  73.     def updateData(self, data):
  74.         self.data = data
  75.  
  76.     # method to set Link feild the Node
  77.     def setLink(self, node):
  78.         self.link = node
  79.  
  80.     # method returns data feild of the Node
  81.     def getData(self):
  82.         return self.data
  83.  
  84.     # method returns address of the next Node
  85.     def getNextNode(self):
  86.         return self.link
  87.  
  88.  
  89. # main method
  90. # creating LinkedList
  91. myList = LinkedList()
  92.  
  93. # adding some elements to the start of LinkedList
  94. myList.addToStart(23)
  95. myList.addToStart(1)
  96. myList.addToStart(5)
  97. myList.addToStart(26)
  98. myList.addToStart(27)
  99. myList.addToStart(28)
  100. # adding some elements to the End of the LinkedList
  101. myList.addToEnd(24)
  102. myList.addToEnd(22)
  103. myList.addToEnd(13)
  104.  
  105. print("The Elements of the Linked List are : ")
  106. myList.display()
  107.  
  108. print("\nThe middle Element of the Linked List is : " + str(myList.middleNode()))
Add Comment
Please, Sign In to add comment