
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
// curr->1->2->3->4
ListNode pre = new ListNode(0);//创建一个虚拟头指针
ListNode curr = pre; curr.next = head;
while(curr.next!=null && curr.next.next!=null){
//因为要修改curr.next = 2;所以要保存节点1
ListNode temp1 = curr.next;
curr.next = curr.next.next; //curr指向节点2
//保存3 ,后续1.next要用
ListNode temp2 = curr.next.next;
//然后节点2指向节点1
curr.next.next = temp1;
curr.next.next.next = temp2;
curr = curr.next.next;
}
return pre.next;
}
}