思路:

对于编程,思路要比编程难,所以先把思路搞清楚,就能往下做题

第一步: 先计算链表的长度,如果k的值大于链表的长度,直接返回 null;

第二步: 比如说链表里面有5个元素,返回倒数后两个,那么意思是不是前三个不用返回,找到第四个的头结点返回即可;
所以,加一个变量 current ,记录当前走到哪一个节点,如果走到  总长度-k, 是不是就可以返回了;

代码如下:

public ListNode FindKthToTail (ListNode pHead, int k) {
        // write code here
        ListNode first=pHead;
        int count=0;
    // 计算总长度
        while(pHead!=null){
            count++;
            pHead=pHead.next;
        }
        if(k>count){
            return null;
        }
  // 用于记录当前走到哪一步
        int current=0;
        pHead=first;
        while(pHead!=null){
          // 总长- k 等于 当前要返回的节点的时候
            if(count-k==current){
                return pHead;
            }
            pHead=pHead.next;
            current++;
        }
        return null;
    }