题目描述:
输入一个链表,输出该链表中倒数第k个结点。
解题思路:
设置两个指针 p 、q,p先走k步,如果走不到第k步(NULL结点是可以走到的,但是NULL结点没有next,所以只能走到NULL),说明链表长度不够k,直接返回NULL;然后,令 p 和 q 开始同步往下移动,直到 p移动到NULL,此时q就是倒数第 k 个节点的,返回q即可
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
if(pListHead == NULL)
return NULL;
ListNode *p = pListHead;
ListNode *q = p;
while(k)
{
if(p != NULL)
p = p->next;
else
return NULL;
k--;
}
while(p)
{
q = q->next;
p = p->next;
}
return q;
}
};