题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
可以用两个指针first,second,第一个指针先向前走k-1步。第二个指针在开始跟着一起走,当第一个指针走到头的时候,第二个指针位置就是倒数第K个结点。不过要记住判断一下链表是否有k个元素。
code
/*
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==nullptr||k==0){
return nullptr;
}
ListNode *first=pListHead;
ListNode *second=nullptr;
for(unsigned int i=1;i<=k-1;++i){
if(first->next!=nullptr)
first=first->next;
else
return nullptr;
}
second=pListHead;
while(first->next!=nullptr){
first=first->next;
second=second->next;
}
return second;
}
};