输入一个链表,输出该链表中倒数第k个结点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
//先让first指针走k - 1步,然后再让lastptr再和firstptr一起走。其中要判断k的值是否越界
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == nullptr || k <= 0)
{
return nullptr;
}
ListNode* firstPtr = pListHead;
ListNode* lastPtr = pListHead;
while(k > 1)
{
if(firstPtr->next)
{
firstPtr = firstPtr->next;
k--;
}
else
{
return nullptr;
}
}
while(firstPtr->next)
{
firstPtr = firstPtr->next;
lastPtr = lastPtr->next;
}
return lastPtr;
}
};