当前位置: 首页 > news >正文

链表算法常用技巧与操作

技巧

1. 引入虚拟头结点

一般适用于不带头节点的单向链表(即给定链表的第一个节点已经存放了有效数据)这种情况很多时候都需要考虑边界情况。这时候创建一个哨兵节点并连接第一个有效节点即可。

2.在两个双向节点中插入一个新节点cur

先让cur和后面的节点连,且连接的过程中都以prev(第一个节点)为视角,不然可能会在某个方向丢失第二个节点。再连prev。第一步prev->next->prev(第二个节点的prev)=cur,第二步cur->next=prev->next(cur和第二个结点已经完成双向连接)。第三步prev->next=cur,第四步cur->prev=prev。(顺序不可换)

我们也可以通过定义新变量优化,把第二个结点定义为next,那么就无所谓顺序问题,只要能连上即可(定义后就不会丢失结点)这里更推荐优化方法。

3.快慢双指针

可以解决判断链表是否有环、找链表中环的入口,链表中倒数第n个结点等问题

常用操作

1. 创建新节点——new

2. 尾插

先定义变量指向尾结点,然后改变该结点的next指向,然后重新定义新的尾结点!

3.头插

new一个虚拟头结点newhead,先让新结点->next=newhead->next,然后newhead->next=新节点。(创建newhead的目的是防止空链表的情况出错,此方法无论链表是否为空都适用)

用此方法逆序链表就非常简单了,创建一个只有newhead的空链表然后把原链表的节点从头到尾依次头插在新链表中

http://www.lryc.cn/news/601886.html

相关文章:

  • 通过硬编码函数地址并转换为函数指针来调用函数
  • 【Agentic】通过LangGrah实现RAG评分和重写
  • 清华大学具身智能多传感器融合感知综述:背景、方法、挑战与展望
  • Flutter开发实战之CI/CD与发布流程
  • 网易大模型算法岗面经80道
  • JSON格式化与结构对比
  • 移植pbrt中的并行化到ray trace in weeks中
  • LangGraph底层API入门总结
  • OpenLayers 综合案例-地图绘制
  • 十字链表以及实现
  • SpringAI入门及浅实践,实战 Spring‎ AI 调用大模型、提示词工程、对话记忆、Adv‎isor 的使用
  • 第五章 中央处理器(CPU)知识体系与考法总结
  • 【第六节】方法与事件处理器
  • Gradle#Plugin
  • Windows---动态链接库Dynamic Link Library(.dll)
  • 2025.7.27总结—新励成
  • Kubernetes 核心组件解析
  • HCIE学习之路:MSTP实现负载均衡实验
  • 【INT范围提取字符串数字为正数】2022-8-29
  • Leetcode 3628. Maximum Number of Subsequences After One Inserting
  • rust- 定义模块以控制作用域和隐私
  • 握手未来,PostgreSQL认证专家
  • 【I】题目解析
  • Spring AI 学习笔记
  • 小架构step系列27:Hibernate提供的validator
  • 「mysql」Mac osx彻底删除mysql
  • Java面试宝典:MySQL性能优化
  • uart通信
  • JVM类加载机制全流程详解
  • 从MySQL的information_schema系统数据库中获取表的元数据信息