leetcode--两两交换链表中的节点

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

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。


示例 1:


输入:head = [1,2,3,4]

输出:[2,1,4,3]

示例 2:

输入:head = []

输出:[]

示例 3:

输入:head = [1]

输出:[1]


提示:

链表中节点的数目在范围 [0, 100] 内

0 <= Node.val <= 100

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


代码实现:

/**

 * 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 node = head;

        head = node.next;

        int count = 1;

        ListNode preNode = null;

        ListNode node1 = null;

        ListNode node2 = null;

        while (node != null ) {

            if (count % 2 == 1) {

                node1 = node;

                node = node.next;

            } else {

                node2 = node;

                node1.next = node2.next;

                if (preNode != null) {

                    preNode.next = node2;

                }

                node2.next = node1;

                preNode = node1;

                node = preNode.next;

            }

            count++;

        }

        return head;

    }

}

你可能感兴趣的:(leetcode--两两交换链表中的节点)