链表中倒数第K个结点
链表中倒数第K个结点
问题:输入一个链表,输出该链表中倒数第k个结点。
思路:设置两个指针i,j,先让j走k-1步,之后两个指针一起走。当j走到链表的最后一个的时候,i指向的为倒数第k个结点
代码实现:
public static ListNode findKthToTail(ListNode head,int k){ if(head ==null) return null; if(k <=0) return null; ListNode i =head, j = head; int index = 1; while ( index <k){ if(j.next ==null) return null; j = j.next; index++; } while (j.next !=null){ i = i.next; j = j.next; } return i; }
测试函数:
public static void main(String[] args){ ListNode A =new ListNode(3); ListNode B = new ListNode(12); ListNode C = new ListNode(1); ListNode D = new ListNode(10); ListNode F = new ListNode(7); A.next = B; B.next = C; C.next = D; D.next = F; System.out.println(findKthToTail(A,2).val); }