给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:
image

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

输入:head = []
输出:[]
示例 3:

输入:head = [1]
输出:[1]

迭代法

/**
 * 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) {
        ListNode dummyNode = new ListNode(0, head);
        ListNode oper = dummyNode;
        while (oper.next != null && oper.next.next != null) {
            ListNode node1 = oper.next;
            ListNode node2 = oper.next.next;
            oper.next = node2;
            node1.next = node2.next;
            node2.next = node1;
            oper = node1;
        }
        return dummyNode.next;
    }
}

posted on 2025-07-12 23:22  caoshikui  阅读(5)  评论(0)    收藏  举报