思路:
1、排除异常:1是空指针,2是k小于0 3是k大于链表的长度;
2、设置两个指针快慢 快的先走k-1个结点,慢的再走;
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
if(pListHead==nullptr||k<0)
return nullptr;
ListNode* fast=pListHead;
while(fast->next&&k!=1)
{
fast=fast->next;
k--;
}
if(fast->next==nullptr&&k>1)//这里判断是不是k大于链表的长度,也就是链表到最后了 k还是不是大于1的;
return nullptr;
ListNode* slow=pListHead;
while(fast->next)
{
fast=fast->next;
slow=slow->next;
}
return slow;
}
};