```/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead ListNode类 
 * @param k int整型 
 * @return ListNode类
 */
function FindKthToTail( pHead ,  k ) {
    // write code here
    //快慢指针(这种思想可以具化为以下画面:
    //本来是要先找到链尾null再往前数k。而通过快慢指针,变成了先数k,然后用快指针找到链尾,此时慢指针就是指向往前数k的节点)
    //老生常谈,注意特殊输入,比如空链表和k大于链表长度
    if(pHead===null || k===0){return null}
    let temp=pHead,num=0
    while(temp){num++;temp=temp.next}
    if(k>num){return null}
    let p1 = pHead
    let p2 = pHead
    for(let i=0;i<k;i++){p1=p1.next} 
    while(p1){
        p1=p1.next
        p2=p2.next
    }
    
    return p2
}
module.exports = {
    FindKthToTail : FindKthToTail
};