题目描述
输入一个链表,输出该链表中倒数第k个结点。OJ链接
示例:
思路描述:两个指针fast和slow,fast先走k个结点,然后fast和slow同时每次走一个结点,直到fast == NULL 结束。如果k个结点还没有走完,fast == NULL,说明没有倒数第k个结点。slow就是倒数第k个结点。
代码:
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{
if(pListHead == NULL)
return NULL;
struct ListNode* cur = pListHead;
while(k--)
{
if(cur == NULL)
{
return NULL;
}
cur = cur->next;
}
struct ListNode* start = pListHead;
while(cur != NULL)
{
cur = cur->next;
start = start->next;
}
return start;
}