14 連結串列中倒數第k個結點
阿新 • • 發佈:2018-11-22
定義兩個指標start和end,讓start先走k步(在走的過程中,需要判斷start是否指向NULL,指向的話說明連結串列長度小於k,直接返回NULL),然後再判斷當前start是否指向NULL,指向的話說明量表長度等於k,直接返回end,否則令它們同時往後移動,當start到達連結串列末尾時,end所指即為連結串列中倒數第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) {
ListNode* start = pListHead;
ListNode* end = pListHead;
if(k == 0) return NULL;
while(k != 0 and start!= NULL){
start = start->next;
--k;
}
if (k > 0) return NULL;
while(start != NULL){
start = start->next;
end = end->next;
}
return end;
}
};