题目描述
输入一个链表,输出该链表中倒数第k个结点。
C++版:
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead==NULL) return NULL;
ListNode *firstNode=pListHead,*secNode=pListHead;
while(--k&&firstNode){
firstNode=firstNode->next;
}
if(firstNode==NULL) return NULL;//考虑k大于链表长度的情况
while(firstNode->next){
firstNode=firstNode->next;
secNode=secNode->next;
}
return secNode;
}
};
JAVA版,更简洁了:
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode p =head ,q=head;
int i=0;
while(p!=null){
if(i++>=k)q=q.next;
p=p.next;
}
return i>=k?q:null;
}
}