双指针,当相距k-1时,当后者到最后时,前者才恰好是倒数第k个元素。
最后一个元素的循环条件是cur.next!=null,而不是cur!=null.
链表访问(cur.next)全程要确保非空!
/** * 输入一个链表,输出该链表中倒数第k个结点。 * @param head 链表 * @param k 倒数第k * @return 输出该链表中倒数第k个结点。 */ public ListNode FindKthToTail(ListNode head,int k) { if(head==null||k<=0){ return null; } ListNode cur=head; for(int i=0;i<k-1;i++){ if(cur.next==null){ return null; } cur=cur.next; } ListNode res=head; while (cur!=null){ cur=cur.next; res=res.next; } return res; }