题目描述:
输入一个链表,输出该链表中倒数第k个结点。
思路:
利用快慢指针,快指针先走k步,然后快慢指针一起走,当快指针走到结束时,慢指针所指向的就是倒数第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 == nullptr || k <= 0){
return nullptr;
}
ListNode* Fast = pListHead;
ListNode* Slow = pListHead;
while(k > 0){
if(Fast == nullptr){
return nullptr;
}
Fast = Fast->next;
k--;
}
while(Fast != nullptr){
Fast = Fast->next;
Slow = Slow->next;
}
return Slow;
}
};