题目: 输入一个链表,输出该链表中倒数第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; } };