Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

Solution 1:

class Solution {

    public ListNode swapPairs(ListNode head) {

        ListNode dmy = new ListNode(0), pre = dmy;

        dmy.next = head;

        while (pre.next != null && pre.next.next != null) {

            ListNode cur = pre.next;

            ListNode suc = cur.next; 

            ListNode tmp = suc.next;

            pre.next = suc;

            suc.next = cur;

            cur.next = tmp;

            pre = cur;

        }

        return dmy.next;

    }

}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄