解题思路:设置两个指针,这两个指针都指向链表的头结点,让第一个节点走k-1步,走到第k个节点的位置;然后在让两个指针向后移动,直到第一个指针指到链表最后一个节点的位置,此时第二个指针指向的就是链表的倒数第k个指针。
实现代码如下:
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k<=0) return NULL;
ListNode* Head = pListHead;
ListNode* Res = pListHead;
for(int i = 1; i< k ; i++)
{
if(Head->next != NULL){
Head=Head->next;
}else{
return NULL;
}
}
while(Head->next != NULL){
Head = Head->next;
Res = Res->next;
}
return Res;
}
};