news 2026/4/18 3:26:55

关于链表中元素的交换的操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于链表中元素的交换的操作

给定一个链表,对于每两个相邻的结点,交换其位置。

如 1->2->3->4->null,返回2->1->3->4->null

只能对结点进行操作,不能修改结点的值,只能操作结点(整个)或结点对应的指针。

分析:因为头结点没有前驱,不便于遍历,需要添加一个虚拟头结点,始终让该结点指向实际链表的头结点。

注意:想不清楚就画图,要明白每一个变量的含义和作用。其实next指针可以不用的,自己想想如何处理。

共用代码:

​ public class ListNode { public int val; public ListNode next; public ListNode(int x) { this.val = x; this.next = null; } public static ListNode createList(int[] nums) { if(null == nums || 0 == nums.length) return null; ListNode head = new ListNode(nums[0]); ListNode needle = head; for(int i = 1; i < nums.length;++i) { ListNode node = new ListNode(nums[i]); needle.next = node; needle = needle.next; needle.next = null; } return head; } }
// 24 使用虚拟头结点 public ListNode swapPairs(ListNode head) { ListNode dummyHead = new ListNode(-1); dummyHead.next = head; ListNode pre = dummyHead; // 链表必须至少两个结点才可以交换,不好理解画图会更直观 while (pre.next != null && pre.next.next != null) { // 指向待交换的第一个结点 ListNode node1 = pre.next; // 指向待交换的第二个结点 ListNode node2 = node1.next; // 记录待交换的第二个结点的下一个结点,避免剩余结点的丢失 ListNode next = node2.next; // 真正的交换,交换的是指针的指向 node2.next = node1; node1.next = next; // 移动指针,为下次交换做准备,第一个node2是新的头结点 pre.next = node2; // 指针向前移动2个位置(注意while中用的是pre.next和pre.next.next) pre = node1; } return dummyHead.next; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:25:37

【大模型预训练】07-数据处理流程设计:从原始数据到模型输入的端到端处理链路

引言数据处理流程设计是现代数据科学和机器学习领域中不可或缺的一环。它涵盖了从原始数据采集到最终模型输入的整个端到端处理链路&#xff0c;确保数据在各个阶段得到有效管理和转换&#xff0c;从而为后续的分析和建模提供高质量的数据基础。在数据驱动的决策日益重要的今天…

作者头像 李华
网站建设 2026/4/17 20:35:18

2025软件测试面试题及答案

【纯干货&#xff01;&#xff01;&#xff01;】花费了整整3天&#xff0c;整理出来的全网最实用软件测试面试大全&#xff0c;一共30道题目答案的纯干货&#xff0c;希望大家多多支持&#xff0c;建议 点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;长文警告&…

作者头像 李华
网站建设 2026/4/6 14:24:12

AI中的优化5-无约束非线性规划之凸性

目录 正文 一、核心概念 1. 全局最小、局部最小、严格局部最小 2. 梯度 &#xff08;1&#xff09;矩阵的偏导数计算&#xff08;梯度&#xff09; &#xff08;2&#xff09;Hessian Matrix &#xff08;3&#xff09;方向导数与梯度 &#xff08;4&#xff09;可行方…

作者头像 李华
网站建设 2026/4/14 1:12:48

架构系统序化

架构的本质与分类 架构的本质 架构的核心是通过合理编排系统内部关系&#xff0c;确保系统高度有序&#xff0c;以应对业务和技术的持续变化。这一过程类似于自然界通过新陈代谢维持有序性。架构通过“分”与“合”实现&#xff1a; 分&#xff1a;将系统拆分为子系统、模块或组…

作者头像 李华
网站建设 2026/3/11 21:04:41

打造可扩展架构的核心原则

打造可扩展架构的核心原则 模块设计原则 模块需具备明确业务定位和完整业务概念&#xff0c;覆盖对应领域全部数据和功能。例如订单模块需包含全渠道订单数据及生命周期管理功能&#xff0c;避免功能碎片化或过度集中。模块应围绕自身数据设计业务逻辑&#xff0c;减少外部依赖…

作者头像 李华