题目
思路
- 挺简单的,随便写了一下就出来了,每次遍历交换即可,之前还想会不会出现奇数节点,如何解决,好像不用考虑。
代码
public ListNode swapPairs(ListNode head) {
//总之就是开始交换 head需要和head.next交换
//哑节点指向
ListNode dummy = new ListNode(-1,head);
//记住head的前一个
ListNode pre = dummy;
while (head!=null && head.next!=null){
//swap1为head swap2为head.next swap3为head.next.next 不用进行交换 只做标记
ListNode swap1 = head;
ListNode swap2 = head.next;
//当然swap3有可能不存在
ListNode swap3=null;
if(head.next.next!=null) swap3 = head.next.next;
//把head和head.next交换
pre.next =swap2;
swap1.next=swap3;
swap2.next = swap1;
head = swap3;
//前一个已经变成swap1了
pre = swap1;
}
return dummy.next;
}