输入一个链表,输出该链表中倒数第k个结点
两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。
#coding:utf-8
class ListNode:
def __init__(self,x):
self.val = x
self.next = None
class Solution:
def FindKthToTail(self,head,k):
front = head
tail = head
#将一个指针指向第k个位置
for i in range(k):
if front == None:
return
if front.next == None and i == k-1:
return head
front = front.next
#首指针和尾指针同时移动
while front.next != None:
front = front.next
tail = tail.next
return tail.next
if __name__ == '__main__':
node1 = ListNode(10)
node2 = ListNode(11)
node3 = ListNode(12)
node4 = ListNode(13)
node5 = ListNode(14)
node6 = ListNode(15)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
node6.next = None
s = Solution()
print(s.FindKthToTail(node1,2).val)