Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.ListNode* removeNthFromEnd(ListNode* head, int n) { if(head==NULL) return NULL; ListNode* pFront=head; ListNode* p=head; ListNode* q=head; for(int i=0; i<(n-1); i++){ q=q->next; } while(q->next){ pPre = p; p = p->next; q = q->next; } if(pFront==NULL){ head=p->next; delete p; } else{ pFront->next=p->next; delete p; } return head; }