[leetcode] 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 else 21 { 22 temp->next = cur; 23 temp = temp->next; 24 } 25 cur = pre->next; 26 } 27 else 28 { 29 temp = temp->next; 30 pre = pre->next; 31 cur = cur->next; 32 } 33 i++; 34 } 35 return head; 36 } 37 };