首页 > 代码库 > Swap Nodes in Pairs

Swap Nodes in Pairs

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.
 
 1 class Solution 2 { 3 public: 4   ListNode *swapPairs(ListNode *head) 5   { 6     if(head == NULL) return NULL; 7     ListNode *cur = head->next, *pre = head, *temp = NULL; 8     int i = 0; 9     while(cur)10     {11       if(i % 2 == 0)12       {13         pre->next = cur->next;14         cur->next = pre;15         if(i == 0)16         {17           head = cur;18           temp = head;19         }20         else21         {22           temp->next = cur;23           temp = temp->next;24         }25         cur = pre->next;26       }27       else28       {29         temp = temp->next;30         pre = pre->next;31         cur = cur->next;32       }33       i++;34     }35     return head;36   }37 };

 

Swap Nodes in Pairs