剑指offer(15)链表中倒数第k个节点

题目描述:

输入一个链表,输出该链表中倒数第k个结点。

解题代码:

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function FindKthToTail(head, k)
{
    // write code here
    if(head == null || k <= 0){
        return null;
    }
    //用两个指针指向头结点
    var p1 = head,p2 = //中途如果p1的下一个节点为空,说明链表中不存在第k个结点,返回nullhead;
    //如果p1的下一个结点不为空,将p1指向下一个结点,一直到p1指向第k个结点
    //中途如果p1的下一个节点为空,说明链表中不存在第k个结点,返回null
    for(var i = 1;i < k;i++){
        if(p1.next == null){
            return null;
        }
        p1 = p1.next;
    }
    //p1和p2一起向后指,当p1指向最后一个结点时,p2所指的即为第k个结点
    while(p1.next != null){
        p1 = p1.next;
        p2 = p2.next;
    }
    return p2;
}

猜你喜欢

转载自www.cnblogs.com/3yleaves/p/9594471.html