BM8 链表中倒数最后k个结点
以下图所示链表为例
定义fast指针和slow指针,让fast先移动k步,然后slow和fast一起向后移动,当fast指向NULL时,slow则指向倒数第k个节点。
完整代码如下:
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
struct ListNode * fast = pHead;
struct ListNode * slow = pHead;
while(k--)
{
if(fast == NULL)
return NULL;
fast = fast->next;
}
while(fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}