題目描述
輸入一個鏈表,輸出該鏈表中倒數第k個結點。
定義兩個指針,前一個先走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==nullptr || k==0)
return nullptr;
ListNode *first = pListHead;
for(int i = 1;i<k;i++)
{
first = first->next;
if(first==nullptr)
return nullptr;
}
ListNode *second = pListHead;
while(first->next)
{
first = first->next;
second = second->next;
}
return second;
}
};