輸入一個鏈表,輸出該鏈表中倒數第k個結點。
對於此題思路:
首先定義兩個指針p1,p2;i=0,i++;當i<k的時候,讓p1先給後面走(p1=p1->next);當i>=k時,讓p1,p2同時給後面走,此時p1和p2之間就相差k個,當p1走到最後的時候停下來,此時p2就是倒數第K個節點。(注意當最終p1走到最後的時候,若i<k,那麼該鏈表長度小於k ,此時返回一個NULL)
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode* p1=pListHead;
ListNode* p2=pListHead;
int i=0;
while(p1!=NULL){
if(i>=k){
p2=p2->next;
}
++i;
p1=p1->next;
}
if(i<k)
return NULL;
return p2;
}
};