链表中倒数第k个节点(每日一题)

 “路虽远,行则将至”

❤️主页:小赛毛

☕今日份刷题:链表中倒数第k个节点

题目描述: 

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

示例1:

输入:
1,{1,2,3,4,5}
返回值:
{5}

 题目分析:

这个地方用到的依旧是快慢指针的思想,只是这里可能和我们之前使用的方法不太一样。

fast指针首先移动k步

接下来fast指针和slow指针同时移动相同步数,

这样当fast指针走到空,slow就是倒数第k个

(相对距离)

 代码:

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pListHead ListNode类 
 * @param k int整型 
 * @return ListNode类
 */
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
    // write code here
    struct ListNode* slow = pListHead,*fast = pListHead;
   while(k--)
   {
    if(fast == NULL)
    {
        return NULL;
    }
    fast = fast->next;
   }
    while(fast)
    {
        fast=fast->next;
        slow=slow->next;
    }
    return slow;
}

你可能感兴趣的:(链表,数据结构)