// 利用P,Q两个指针两两分组操作,记得用Pre保存之前翻转好的链表末尾
// 以方便将新翻转的链表连上
class Solution {
public ListNode swapPairs(ListNode head){
if (head == null) return null;
if (head.next == null) return head;
ListNode p = head;
ListNode q = head.next;
ListNode pre = p;
int i = 0;
while(p.next != null){
p.next = q.next;
q.next = p;
if (i == 0) {
head = q;
i ++;
}
p = p.next;
if (p == null || p.next == null) // 偶数 或 奇数
break;
q = p.next;
pre.next = q;// 将之前已经翻转好的链表连上现在的
pre = p;
}
return head;
}
}