![]()
解题思路:这题就是正常模拟,我用三个指针,left,mid,right,从dummy_head开始,一直交换即可。
/**
* 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) {
if(head==null || head.next==null) return head;
ListNode dummy_head = new ListNode(0,head);
ListNode left = dummy_head;
ListNode mid = head;
ListNode right = head.next;
while(true){
left.next = right;
mid.next = right.next;
right.next = mid;
if(mid.next==null||mid.next.next==null) break;
left = mid;
right = mid.next.next;
mid = mid.next;
}
return dummy_head.next;
}
}