题目描述
输入一个链表,输出该链表中倒数第k个结点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
//利用两个指针的位置差可以扫描一遍就找出结果,注意k=0和传入空指针的情况
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if (pListHead == nullptr || k == 0)
return nullptr;
ListNode *p1, *p2;
p1 = p2 = pListHead;
for (int i = 1; i < k; ++i)
{
if (p2->next == nullptr)
return nullptr;
p2 = p2->next;
}
while (p2->next != nullptr)
{
p2 = p2->next;
p1 = p1->next;
}
return p1;
}
};