题目描述
输入一个链表,输出该链表中倒数第k个结点。
解析
可以先便利一遍求出链表总长,再遍历第二遍求出结点。
或者定义两个指针,一个先遍历到第k个结点,再两个一起往后遍历,前一个为null时,后一个就是题目要求的结点。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(k<=0||pListHead==NULL)return NULL;
ListNode *p = pListHead;
ListNode *q;
for(int i=0;i<k-1;++i){
if(p->next==NULL)return NULL;
p = p->next;
}
p = p->next;
q = pListHead;
while(p){
p = p->next;
q = q->next;
}
return q;
}
};