题目描述
输入一个链表,输出该链表中倒数第k个结点。
/*struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x):val(x), next(NULL) { }
};*/
class Solution
{
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
ListNode* p = pListHead;
ListNode* q = pListHead;
unsigned int number = 0;
while(number<k && p) //p指针移动到第k个结点
{
++number;
p = p->next;
}
if(p==NULL&&number<k) //如果p为NULL,则链表中的元素个数小于k,返回NULL
{
return NULL;
}
else //链表中的元素个数大于k,同步移动p和q,p到链表末尾,则q在倒数第k个结点
{
while(p&&q)
{
p = p->next;
q = q->next;
}
return q;
}
}
};