news 2026/6/19 15:47:30

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

作者头像

张小明

前端开发工程师

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/6/18 21:14:48

链表中的回文判断

给一个链表&#xff0c;判断这个链表是否为回文链表。能否使用O(1)的空间复杂度解决问题&#xff1f;思路1&#xff1a;使用辅助空间&#xff0c;我们这里给出了使用动态数组作为检查表&#xff0c;给出了两种实现方式&#xff0c;但是这种实现方式效率不高。​ public class L…

作者头像 李华
网站建设 2026/6/19 3:02:06

技术架构的核心目标

技术架构的核心问题与目标 技术架构的核心在于解决系统在物理层面的稳定性、性能和扩展性问题&#xff0c;确保业务功能在复杂环境下可靠运行。以下是技术架构需重点解决的问题及实现目标&#xff1a;系统的物理组成 一个完整的系统由多个层级构成&#xff1a; 接入系统&#x…

作者头像 李华
网站建设 2026/6/16 7:23:20

算法导论第三版,学习日志,2.思考

2-1 &#xff08;在归并排序中对小数组采用插入排序&#xff09;虽然归并排序的最坏情况运行时间为 Θ(n lg n)&#xff0c;而插入排序的最坏情况运行时间为 Θ(n)&#xff0c;但是插入排序中的常量因子可能使得它在 n 较小时&#xff0c;在许多机器上实际运行得更快。因此&…

作者头像 李华
网站建设 2026/6/19 15:15:48

Python数据类型入门

引言 在Python编程中&#xff0c;数据类型就像“食材”&#xff0c;掌握它们才能做出美味的“代码大餐”。今天我们用生活中的例子&#xff0c;带大家认识Python最常用的6种数据类型&#xff0c;看完就能动手写代码&#xff01; 一、整数与浮点数&#xff1a;数字的两种形态 整…

作者头像 李华
网站建设 2026/6/18 2:44:10

基于遗传算法的多式联运车辆路径网络优优化研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真…

作者头像 李华