1 class Solution { 2 public: 3 ListNode *removeNthFromEnd(ListNode *head, int n) { 4 5 ListNode* fake = new ListNode(-1); 6 fake->next = head; 7 ListNode* p = fake; 8 while(n >0){ 9 p = p->next; 10 n--; 11 } 12 13 ListNode* cur = fake; 14 while(p->next){ 15 p = p->next; 16 cur = cur->next; 17 } 18 ListNode* tmp = cur->next; 19 cur->next = cur->next->next; 20 delete tmp; 21 22 return fake->next; 23 } 24 };