[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;
}