题目描述
输入一个链表,输出该链表中倒数第k个结点。
编程过程
此处采用两个指针依次后移的方法来求解,首先,用一个指针移到第k个位置,之后将第二个指针放在第一位,与第二个指针一同移动,当第二个指针移动到最后的时候,第一个指针即处于倒数第k个结点。
考虑:链表为空、k为小于等于零的数,以及k的长度大于链表长度等情况。
1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode FindKthToTail(ListNode head,int k) { 12 if (head == null || k <= 0){ 13 return null; 14 } 15 ListNode pre = head; 16 ListNode last = head; 17 for(int i = 1; i<k; i++){ 18 if(pre.next != null){ 19 pre = pre.next; 20 }else{ 21 return null; 22 } 23 } 24 while(pre.next != null){ 25 pre = pre.next; 26 last = last.next; 27 } 28 return last; 29 30 } 31 }