document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. # program to delete kth element from the end of 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.     # deleting node with only that node pointer
  40.     def deleteNode(self, nodePtr):
  41.         if nodePtr is None:
  42.             return
  43.         else:
  44.             # make a pointer to next node
  45.             nextNode = nodePtr.getNextNode()
  46.  
  47.         # copy deteils of next node to current node
  48.         nodePtr.updateData(nextNode.getData())
  49.         nodePtr.setLink(nextNode.getNextNode())
  50.  
  51.         # set nextNode to None
  52.         nextNode = None
  53.  
  54.     # deleting kth element from the end
  55.     def delete_kth_Element_End(self, k):
  56.         first = self.head
  57.         second = self.head
  58.  
  59.         # moving second to the kth node from the start
  60.         for i in range(k):
  61.             second = second.getNextNode()
  62.  
  63.         # moving second to end of the linked list
  64.         while second is not None:
  65.             first = first.getNextNode()
  66.             second = second.getNextNode()
  67.  
  68.         # delete first as it now points to the kth node from the end
  69.         self.deleteNode(first)
  70.         return
  71.  
  72.  
  73.  
  74. # node class
  75. class Node:
  76.     # default value of data and link is none if no data is passed
  77.     def __init__(self, data=None, link=None):
  78.         self.data = data
  79.         self.link = link
  80.  
  81.     # method to update the data feild of Node
  82.     def updateData(self, data):
  83.         self.data = data
  84.  
  85.     # method to set Link feild the Node
  86.     def setLink(self, node):
  87.         self.link = node
  88.  
  89.     # method returns data feild of the Node
  90.     def getData(self):
  91.         return self.data
  92.  
  93.     # method returns address of the next Node
  94.     def getNextNode(self):
  95.         return self.link
  96.  
  97.        
  98. # main method
  99. # creating LinkedList
  100. myList = LinkedList()
  101. myList.addToStart(1)
  102. myList.addToEnd(2)
  103. myList.addToEnd(3)
  104. myList.addToEnd(4)
  105. myList.addToEnd(5)
  106. myList.addToEnd(6)
  107. myList.addToEnd(7)
  108. myList.addToEnd(8)
  109. myList.addToEnd(9)
  110. myList.addToEnd(10)
  111. myList.addToEnd(11)
  112. myList.display()
  113.  
  114. print("Deleting 5th element from the end of the linked list")
  115. myList.delete_kth_Element_End(5)
  116. myList.display()
');