七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

两两交换链表中的节点:虚拟头节点

写作时间:2026-07-22 08:42:30

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

需求

  • 交换链表中的相邻节点
  • 返回交换链表后的头节点
  • 不锈钢节点内部的值

实现

  • 设立虚拟头节点
  • 设置两个相邻的变量实现遍历

代码

class Solution {
    public ListNode swapPairs(ListNode head) {
//        创建一个虚拟节点,指向头节点
        ListNode dummy = new ListNode();
//        创建一个当前节点,指向虚拟节点
        ListNode current = dummy;
//        当当前节点的下一个节点和下下一个节点都存在时,进行交换
        while (current.next != null && current.next.next != null) {
//            创建两个节点,分别指向当前节点的下一个节点和下下一个节点
            ListNode first = current.next;
            ListNode second = current.next.next;
//            交换两个节点的位置
            first.next = second.next;
//            将当前节点指向第二个节点
            current.next = second;
//            将第二个节点指向第一个节点
            current.next.next = first;
//            将当前节点移动到下一个节点
            current = current.next.next;
        }
        return dummy.next;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents