题目描述
输入一个链表,输出该链表中倒数第k个结点。
示例
输入:1,{1,2,3,4,5}
返回值:{5}
解题思路:首先定义两个指针变量,同时指向head,让其中一个指针先走k步,接下来让两个指针同时走,直到快指针指向的为空即可停止,慢指针所指向的值即为倒数第k个节点。
代码实现
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{
struct ListNode *fast = pListHead,*slow = pListHead;
while(k--)
{
if(fast == NULL)
{
return NULL;
}
fast = fast->next;
}
while(fast)
{
fast = fast->next;
slow = slow->next;
}
return slow;
}