1. 程式人生 > >14 連結串列中倒數第k個結點

14 連結串列中倒數第k個結點

定義兩個指標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; } };