设置两个指针,kth,end,kth初始化为NULL,当链表的长度小于k值时,返回NULL,表示没有这个节点。当该链表为空时,返回pListHead,k的数值类型为unsigned int,取值可能为0时,当取0时,不成立,返回NULL。
设置一个计数器count,累加count的值,当count=k时,end指向第k个节点,令kth指向pListHead,pListHead与end之间的距离为k,依次累加kth和end,当end指向尾节点时,kth指向倒数第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)
-
{
-
if (pListHead==
NULL)
-
return pListHead;
-
if(k==
0)
-
return
NULL;
-
ListNode* kth=
NULL,*end=pListHead;
-
int count=
0;
-
while(end!=
NULL)
-
{
-
count++;
-
if(count==k)
-
kth=pListHead;
-
else
if(count>k)
-
kth=kth->next;
-
end=end->next;
-
}
-
return kth;
-
}
-
};