思路
(1)若当前结点为cur,判断cur后面是否还有两个结点,如果没有结点或者只有一个结点就不需要再进行交换了,直接退出循环。
(2)设置两个临时结点保存,cur后的第一个和第二个结点,对他们进行交换,然后重新设置cur的指向,不断循环,直至不符合(1)。
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy=new ListNode(-1,head);
ListNode cur=dummy;
ListNode firstnode=null;
ListNode secondnode=null;
ListNode temp=null;
while(cur.next!=null&&cur.next.next!=null){
//保证cur后面有两个结点交换
temp=cur.next.next.next;//保存结点
firstnode=cur.next;
secondnode=cur.next.next;
cur.next=secondnode;
secondnode.next=firstnode;
firstnode.next=temp;
cur=firstnode;
}
return dummy.next;
}
}