sundeepblue
5/2/2014 - 8:39 PM

[list] remove kth from end in a linked list

[list] remove kth from end in a linked list

ListNode* removeKthFromEnd(ListNode *h, int k) {
    if(!h || k <= 0) return h;
    ListNode dummy(0);
    dummy.next = h;
    ListNode *pre = &dummy, *cur = h;
    int i;
    for(i=0; i<k-1; i++) {
        if(cur->next == NULL) // k could be very big number
            return h;
        cur = cur->next;
    }
    while(cur->next) {
        cur = cur->next;
        pre = pre->next;
    }
    ListNode *to_be_deleted = pre->next;
    pre->next = pre->next->next;
    delete to_be_deleted;
    return dummy.next;
}