题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:双指针
设置一个快指针一个慢指针,都指向头结点
快指针先走k-1步
然后快慢指针同速走,直到快指针走到尾,此时慢指针指向的就是倒数第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(k == 0 || pListHead == NULL) return NULL;
ListNode* pk = pListHead;
ListNode* p = pListHead;
for(int i = 0;i < k-1;i++){
if(p->next == NULL)//倒数第k个不存在
return NULL;
p = p->next;
}
while(p->next != NULL){
p = p->next;
pk = pk->next;
}
return pk;
}
};