题目描述
思路分析
我们可以使用快慢指针的方法,定义两个指针,fast为快指针,slow为慢指针。先让fast走k步,然后让fast和slow同步向前走,当fast走到NULL时,slow恰好走到倒数第k个数。我们以k=2为例:
代码实现
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
struct ListNode* fast,*slow;
fast = slow = pListHead;
if(k == 0)
{
return NULL;
}
while(k--)
{
if(fast==NULL)
{
return NULL;
}
fast=fast->next;
}
while(fast)
{
fast=fast->next;
slow=slow->next;
}
return slow;
}