首页 > 代码库 > Leetcode | Swap Nodes in Pairs

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.

比起第一次写简洁多了。

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *swapPairs(ListNode *head) {12         if (head == NULL) return head;13         ListNode h(0), *first = head, *second, *prev = &h, *nextFirst;14         h.next = head;15         16         while (first) {17             second = first->next;18             if (!second) break;19             prev->next = second;20             nextFirst = second->next;21             second->next = first;22             first->next = nextFirst;23             prev = first;24             first = nextFirst;25         }26         27         return h.next;28     }29 };

 

Leetcode | Swap Nodes in Pairs