m2skills

kth element from end ll python

Jan 30th, 2018
947
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.08 KB | None | 0 0
  1. # program to implement Linked List
  2.  
  3. class LinkedList:
  4.     def __init__(self):
  5.         self.head = None
  6.  
  7.     # method adds elements to the left of the Linked List
  8.     def addToStart(self, data):
  9.         # create a temporary node
  10.         tempNode = Node(data)
  11.         tempNode.setLink(self.head)
  12.         self.head = tempNode
  13.         del tempNode
  14.  
  15.     # method adds elements to the right of the Linked List
  16.     def addToEnd(self, data):
  17.         start = self.head
  18.         tempNode = Node(data)
  19.         while start.getNextNode():
  20.             start = start.getNextNode()
  21.         start.setLink(tempNode)
  22.         del tempNode
  23.         return True
  24.  
  25.     # method displays Linked List
  26.     def display(self):
  27.         start = self.head
  28.         if start is None:
  29.             print("Empty List!!!")
  30.             return False
  31.  
  32.         while start:
  33.             print(str(start.getData()), end=" ")
  34.             start = start.link
  35.             if start:
  36.                 print("-->", end=" ")
  37.         print()
  38.  
  39.     # kth element from the end
  40.     def k_Element_End(self, k):
  41.         first = self.head
  42.         second = self.head
  43.  
  44.         for i in range(k):
  45.             second = second = second.getNextNode()
  46.  
  47.         while second is not None:
  48.             first = first.getNextNode()
  49.             second = second.getNextNode()
  50.  
  51.         return first.getData()
  52.  
  53.        
  54. # node class
  55. class Node:
  56.     # default value of data and link is none if no data is passed
  57.     def __init__(self, data=None, link=None):
  58.         self.data = data
  59.         self.link = link
  60.  
  61.     # method to update the data feild of Node
  62.     def updateData(self, data):
  63.         self.data = data
  64.  
  65.     # method to set Link feild the Node
  66.     def setLink(self, node):
  67.         self.link = node
  68.  
  69.     # method returns data feild of the Node
  70.     def getData(self):
  71.         return self.data
  72.  
  73.     # method returns address of the next Node
  74.     def getNextNode(self):
  75.         return self.link
  76.  
  77.  
  78. # main method
  79. # creating LinkedList
  80. print("Program to print the kth element from the end of the Linked List")
  81. myList = LinkedList()
  82. myList.addToStart(1)
  83. myList.addToEnd(2)
  84. myList.addToEnd(3)
  85. myList.addToEnd(4)
  86. myList.addToEnd(5)
  87. myList.addToEnd(6)
  88. myList.addToEnd(7)
  89. myList.addToEnd(8)
  90. myList.addToEnd(9)
  91. myList.addToEnd(10)
  92. myList.addToEnd(11)
  93. myList.display()
  94.  
  95. print("The 5th element from the end is : " + str(myList.k_Element_End(5)))
Add Comment
Please, Sign In to add comment