4/03/2014

Leetoce -- Remove Nth Node From End of List

/**  
  * Definition for singly-linked list.  
  * struct ListNode {  
  *   int val;  
  *   ListNode *next;  
  *   ListNode(int x) : val(x), next(NULL) {}  
  * };  
  */  
 class Solution {  
 public:  
   ListNode *removeNthFromEnd(ListNode *head, int n) {  
     ListNode * dummyHead = new ListNode(0);  
     dummyHead->next = head;  
     ListNode * pre = dummyHead;  
     ListNode *follower = dummyHead;  
     for(int i = 0; i < n; ++i) {  
       pre = pre->next;  
     }  
     while(pre->next != NULL) {  
       pre = pre->next;  
       follower = follower->next;  
     }  
     ListNode * toDelete = follower->next;  
     follower->next = toDelete->next;  
     toDelete->next = NULL;  
     delete toDelete;  
     return dummyHead->next;  
   }  
 };  

No comments: