标签:
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.
class Solution { public: ListNode* swapPairs(ListNode* head) { if (!head || !head->next) return head; ListNode *dummy = new ListNode(-1); dummy->next = head; ListNode *pre = dummy, *cur = head, *next = head->next; int i = 0; while (cur) { ++i; if (i % 2 == 0) { ListNode *last = cur->next; cur->next = next; last->next = pre->next; pre->next = last; pre = cur; cur = next; if (next) next = next->next; } else { if (next) next = next->next; else break; } } return dummy->next; } };
http://gongxuns.blogspot.com/2012/12/leetcodeswap-nodes-in-pairs.html
[LeetCode] Swap Nodes in Pairs 成对交换节点
标签:
原文地址:http://www.cnblogs.com/grandyang/p/4441680.html