题目描述
输入一个链表,输出该链表中倒数第k个结点。
【分析】双指针的典型题目。但是需要注意几个问题:
1.需要判断pListHead是否为空指针;
2.输入的k可能为0;
3.输入的链表的节点个数小于k,那倒数第K个节点就无意义,直接返回NULL。
代码如下:
/*
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 || k == 0)
return nullptr;
ListNode* slow = pListHead;
ListNode* fast = pListHead;
for(unsigned int i = 0;i < k-1;++i){
if(fast->next != NULL)
fast = fast -> next;
else
return nullptr;
}
while(fast->next){
slow = slow->next;
fast = fast->next;
}
return slow;
}
};