题目:
输入一个链表,输出该链表中倒数第k个结点。
两个指针,有一个先走k-1步。另一个从头开始,两个同时走,当一个到达末尾时,另一个就到了末尾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==NULL)
return NULL;
ListNode* begin=pListHead;
ListNode* pre=pListHead;
int count=k-1;
while(begin!=NULL&&count)
{
--count;
begin=begin->next;
}
if(count>0||begin==NULL)
return NULL;
ListNode* temp=pListHead;
while(begin!=NULL)
{
begin=begin->next;
temp=pre;
pre=pre->next;
}
return temp;
}
};