# 【Leetcode】Swap Nodes in Pairs

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.

	public ListNode swapPairs(ListNode head) {
ListNode pre = null, q = head, p = head, t = null;
if (head == null || q.next == null)
p = q.next;
t = q.next.next;
// pre q p t，调整q/p位置，以1,2,3为例
while (p != null) {
p.next = q; // 互换两节点
if (pre != null) // 如果不是头节点交换
pre.next = p;
else
pre = q; // 调整pre指针
q = t;// 调整q 指针
if (q != null) {
p = q.next;// 调整p指针
if (p != null) {
t = p.next;// 调整t指针
} else {
pre.next = q;// 如果p为空，则是奇数节点，则调整尾节点一个节点指向，并跳出循环
break;
}
} else // 若为空则结束循环
break;

}
if (q == null) // 若为偶数节点并到末尾，则调整尾节点为空，防止存在循环
pre.next = null;
}

#### Swap Nodes in Pairs -- LeetCode

2014-02-26 01:37:59

#### LeetCode 24 Swap Nodes in Pairs（交换序列中的结点）（Linked List）

2015-11-12 18:43:57

#### LeetCode24. Swap Nodes in Pairs简单到一次性通过

2016-02-02 21:01:22

#### [LeetCode] 024. Swap Nodes in Pairs (Medium) (C++/Python)

2015-03-05 14:39:27

#### (Java)LeetCode-24. Swap Nodes in Pairs

2016-06-02 16:53:15

#### LeetCode 24 Swap Nodes in Pairs (C,C++,Java,Python)

2015-05-11 16:37:22

#### leetcode 24 Swap Nodes in Pairs C++

2016-05-28 17:03:13

#### 24. Swap Nodes in Pairs [easy] (Python)

2016-05-29 15:09:02

#### 【LeetCode-面试算法经典-Java实现】【024-Swap Nodes in Pairs（成对交换单链表的结点）】

2015-07-24 06:55:18

#### Swap Nodes in Pairs 交换链表的每两个节点

2018-05-31 11:17:11