Saturday, September 20, 2014

LeetCode: Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

 /**  
  * Definition for singly-linked list.  
  * struct ListNode {  
  *   int val;  
  *   ListNode *next;  
  *   ListNode(int x) : val(x), next(NULL) {}  
  * };  
  */  
   
   ListNode *swapPairs(ListNode *head) {  
     if(!head || !head->next)return head;  
     ListNode *nxt=head->next, *cur = head, *prev = NULL;  
     ListNode *res = head->next;  
     while(cur && nxt)  
     {  
       cur->next = nxt->next;  
       nxt->next = cur;  
       if(prev)  
         prev->next = nxt;  
       prev = cur;  
       cur = cur->next;  
         
       if(cur)nxt = cur->next;  
     }  
     return res;  
   }  

No comments:

Post a Comment