题目:24. 两两交换链表中的节点

描述

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

方法一(改变相邻节点的值)

 public ListNode swapPairs(ListNode head) {
        ListNode res = head;
        if (head == null || head.next == null) {
            return head;
        }
        while (head != null && head.next != null) {
            ListNode temp = head.next;
            head.val = head.val ^ temp.val;
            temp.val = head.val ^ temp.val;
            head.val = head.val ^ temp.val;
            head = temp.next;
        }
        return res;
    }

方式二(真正交换相邻的两个节点)

    public ListNode swapPairs(ListNode head) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;
        ListNode temp = dummyHead;

        while (temp.next != null && temp.next.next != null) {
            ListNode node = temp.next;
            ListNode node1 = node.next;

            node.next = node1.next;
            node1.next = node;
            temp.next = node1;

            temp = node;
        }
        return dummyHead.next;
    }
posted @ 2021-04-05 18:52  迁承_0204  阅读(40)  评论(0编辑  收藏  举报