package com.company;
import javax.swing.tree.TreeNode;
import java.lang.reflect.Array;
import java.util.*;
public class Main {
public static void main(String[] args) {
ListNode head = new ListNode();
head.val = 2;
ListNode second = new ListNode();
second.val = 3;
head.next = second;
ListNode third = new ListNode();
third.val = 4;
head.next.next = third;
ListNode four = new ListNode();
four.val = 5;
head.next.next.next = four;
ListNode five = new ListNode();
five.val = 6;
head.next.next.next.next = five;
ListNode six = new ListNode();
six.val = 7;
head.next.next.next.next.next = six;
ListNode list = swapPairs(head);
}
public static ListNode swapPairs(ListNode head) {
ListNode imghead = new ListNode();//虚拟头节点
imghead.next = head;//连接虚拟头节点和后续节点
ListNode cur=imghead;
while(cur.next!=null&&cur.next.next!=null){//注意先写cur.next 再写cur.next.next避免空指针异常
ListNode tmp=cur.next;
ListNode tmp1=cur.next.next.next;//交换位置后的2个节点之后的节点先存起来
cur.next=cur.next.next;//实现交换位子
cur.next.next=tmp;//实现交换位子
cur.next.next.next=tmp1;//交换位置后和下一个节点连起来
cur=cur.next.next;//cur走2步。走到要交换位子的前一个节点
}
return imghead.next;
}
static class ListNode {
private int val;
private ListNode next;
}
}