输入一个链表,输出该链表中倒数第k个结点。
思路:
定义两个指针都从头开始,第一个指针先走,第二个指针先不走,当第一个指针和第二个指针错开K位时,第二个指针再和第一个指针一起走,当第一个指针走到结尾时,第二个指针正好走到倒数第K个,注意还要判断链表中有不有大于或等于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;
int i = 0;
for(;p != NULL;i++)
{
if(i >= k)
{
q = q->next;
}
p = p->next;
}
return i < k ? NULL:q;
}
};