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

【初赛】链表 - Slayer

链表性质知识点总结

链表是一种线性数据结构,其核心特点是数据元素(称为 “节点”)通过指针或引用连接,而非像数组那样存储在连续的内存空间中。这种结构决定了它与数组截然不同的性质,适用于频繁插入 / 删除、内存动态分配的场景。

一、链表的核心定义与结构

  1. 基本构成

链表的最小单元是节点(Node),每个节点包含两部分:

  • 数据域(Data):存储具体的数据(如整数、字符串、对象等);
  • 指针域(Pointer/Reference):存储下一个(或上一个)节点的内存地址,用于建立节点间的连接。
  1. 链表的 “表头” 与 “表尾”
  • 表头(Head):链表的第一个节点,是访问整个链表的入口(若丢失表头,-可能无法访问后续所有节点);
  • 表尾(Tail):链表的最后一个节点,其指针域通常指向 null(空),表示链表的结束(循环链表除外)。

二、链表的主要类型(按结构分类)

  • 单链表:每个节点仅含 “指向后一个节点” 的指针(单向连接),表尾指针指向 null。 结构简单,节点占用内存少。 无法反向遍历;删除中间节点时,需先遍历找到 “前驱节点”(效率低)。

  • 双链表:每个节点含 “指向前驱节点” 和 “指向后继节点” 的两个指针(双向连接)。 可正向 / 反向遍历;删除中间节点时无需遍历找前驱(直接通过前驱指针定位)。 节点占用内存更多(多一个指针域);插入 / 删除时需维护两个指针(逻辑稍复杂)。

  • 循环链表:表尾节点的指针不指向 null,而是指向表头(单循环链表)或前驱节点(双循环链表)。 适合 “环形访问”场景(如约瑟夫环问题);遍历到表尾后可直接回到表头,无需重新定位。 若操作不当易出现 “死循环”;判断链表结束的条件需特殊处理(不能用 null)。

三、链表的核心性质

  1. 节点存储在离散的内存块中(内存可分散在任意位置),节点间通过指针 “串联”,无法通过索引直接定位节点。

  2. 链表:仅支持顺序访问—— 必须从表头开始,逐个通过指针遍历到目标节点,访问第 k 个节点的时间复杂度 O(n)(最坏需遍历所有节点)。

\(\color{red}{不能随机访问}\)

  1. 插入 / 删除操作:效率差异
操作场景 单链表时间复杂度 双链表时间复杂度 原因
表头插入 / 删除 O(1) O(1) 链表仅需修改表头指针。
中间节点插入 / 删除 O(n) O(1) 单链表需找前驱;双链表直接通过前驱 / 后继指针修改。
表尾插入 / 删除 O(n) O(1) 单链表需遍历到表尾;双链表直接通过表尾指针操作。
  1. 节点按需动态分配(插入时申请、删除时释放),内存利用率高,无固定大小限制。

  2. 优缺点

  • 操作效率

    • 表头 / 中间插入 / 删除效率高(无需移动元素);
    • 动态扩容灵活。
  • 内存管理

    • 内存按需分配,无固定大小限制。
  • 操作效率

    • 不支持随机访问,查询效率低(O(n));
    • 需额外存储指针,内存开销大。
  • 内存管理
    手动管理内存语言(如 C/C++)易出现内存泄漏。

四、链表的常见操作与时间复杂度

操作 单链表时间复杂度 双链表时间复杂度 核心思路
遍历链表 O(n) O(n) 从表头开始,沿指针逐个访问,直至表尾(循环链表需判断是否回到表头)。
查找指定元素 O(n) O(n) 遍历链表,对比节点数据域,匹配则返回节点。
表头插入 O(1) O(1) 新节点指针指向原表头 → 更新表头为新节点。
表尾插入 O(n) O(1) 单链表遍历到表尾;双链表直接通过表尾指针挂载新节点。
中间节点删除 O(n) O(1) 单链表找前驱节点后修改指针;双链表直接修改目标节点的前驱 / 后继指针。
链表反转 O(n) O(n) 单链表用 “三指针法”(prev/curr/next)逐节点反转;双链表需同时反转前驱 / 后继指针。
环检测 O(n) O(n) 快慢指针法:快指针走 2 步,慢指针走 1 步,相遇则存在环。

五、链表的典型应用场景

  1. 实现栈 / 队列:
    • 栈:表头作为栈顶,push/pop 均为 O(1);
    • 队列:双链表表头为队头、表尾为队尾,enqueue/dequeue 均为 O(1)(避免数组队列 “假溢出”)。
  2. 哈希表冲突解决:
    链地址法中,用链表存储哈希值相同的元素,解决哈希冲突
  3. 动态数据存储:
    如实时任务列表、购物车商品(需频繁添加 / 删除,数据量不固定)。
  4. 环形场景:
    如约瑟夫环问题、循环调度(用循环链表实现环形访问逻辑)。

六、关键易错点

空指针异常:遍历或操作时未判断 null(如访问表尾后的空指针);
死循环:循环链表未正确判断遍历终止条件(如未检测是否回到表头);
内存泄漏:手动管理内存语言(C/C++)中,删除节点后未释放内存;
双链表指针维护遗漏:插入 / 删除时未同时更新 “前驱” 和 “后继” 指针,导致链表断裂。

相关文章:

【初赛】链表 - Slayer

链表性质知识点总结 链表是一种线性数据结构,其核心特点是数据元素(称为 “节点”)通过指针或引用连接,而非像数组那样存储在连续的内存空间中。这种结构决定了它与数组截然不同的性质,适用于频繁插入 / 删除、内存动态分配的场景。 一、链表的核心定义与结构基本构成链表…...

纷享销客CRM系统自定义APL代码破解企业深度定制难题

在许多中大型企业,尤其是央企、金融、高科技等行业,对 CRM 系统提出了更为复杂的业务流程定制需求。尽管零代码、低代码配置工具有一定的灵活性,但在面对高度复杂、深度融合业务逻辑的安全机制或特殊流程时,仍显乏力。 为此,纷享销客提供了服务端代码级定制能力,通过自定…...

第2章 zynq开发板FSBL的生成和NAND烧录

前言 由于本人较懒,记录主要是过程,由于zynq的比stm32做的人少很多,资料也少很多,我会简要介绍原理,操作流程主要由图片加少量文字组成,每一章都是在之前的章节基础上做的一、新建FSBL工程 打开vivado,打开SDK打开后会自动根据之前生成的HDF自动生成硬件平台新建一个FSB…...

工具大全

<!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><title>工具大全</title><style>/*全…...

RocketMQ vs kafka

目录背景和价值1. 更激进的“零拷贝”技术2. 更简洁的存储模型3. 更“粗糙”但高效的批处理4. 权衡取舍的可靠性保证对比总结参考资料 背景和价值 你这个问题非常好,直击了两者设计哲学的核心差异。 简单来说,Kafka 更快,并非因为它的代码效率绝对更高,而是因为它的设计目标…...

JL-32 土壤速测仪 手持便携 大容量 多参数可同时监测

JL-32 土壤速测仪 手持便携 大容量 多参数可同时监测产品概述 土壤速测仪是一款携带方便,操作简单,集采集与存储于一体的可移动式观测仪器。由手持式速测主机、土壤类传感器、USB数据线、电源适配器、便携式手提箱等部分组成。速测仪主机可通过集线器接入不同类型的传感器,互…...

直播录制神器!一款多平台直播流自动录制客户端!

StreamCap —— 一个基于 FFmpeg 和 StreamGet 的多平台直播流录制客户端,覆盖 40+ 国内外主流直播平台,支持批量录制、循环监控、定时监控和自动转码等功能。大家好,我是 Java陈序员。 现如今,观看直播已成为日常生活中的一种娱乐消遣方式,但常常由于一些不可抗的原因错过…...

101.计组--二章

101.计组--二章数据的表示和运算 "自六月份另一个学校毕业 已经有拖三个多月的计组学习 当时其实已经已有一些学习 仅仅差了一节内容结束 也确实因为这个复杂的运算各类东西 言归正传 新的学校 新的学习 开始总结"先看一下总的还是分为三大块 三步走 一.数制 编码 先…...

LobeChat搭建

步骤 docker search lobe-chat docker pull lobehub/lobe-chat docker run -d -p 3210:3210 -e ACCESS_CODE=lobe66 --name lobe-chat lobehub/lobe-chat docker ps访问 http://localhost:3210 相关的key进入网页再配置,不必加入到docker run中。本文来自博客园,作者:潇汀…...

长园智能装备遇上利驰SuperHarness-3D,实现充电桩线束设计效率与精度双提升!

利驰数字线束软件,赋能长园智能装备充电桩线束智造。设计案例:​感谢南瑞、盛弘、长园等众多充电桩龙头企业,选择利驰数字线束[抱拳][抱拳][抱拳]...

学习笔记:操作分块 / 根号重构

感谢校内模拟赛给我强行灌输了这个东西。。。 概述 操作分块 / 根号重构,又名时间轴分块,可以解决需要多次修改和查询的问题,常常难以直接维护。 借鉴序列分块的思想,我们设定一个阈值 \(B\),将连续 \(B\) 次操作视为一块。考虑一次查询操作,将对它产生影响的修改分为两类…...

url测试脚本3

#!/bin/sh . /etc/init.d/functions# 待检测的 URL 列表 array=("http://mail.163.com""http://mail.sina.com/" )# 等待效果,输出进度 wait_for_start() {echo -n "Start Curl_check"for n in 1 2 3; doecho -n " ."sleep 1doneecho…...

深入解析:linux基本知识

深入解析:linux基本知识pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size:…...

解决方案架构师是做什么

解决方案架构师 面试题 客户是怎么管理的 渠道变革变换的是哪些内容。变的是什么? 分层分级是怎么设计,价格体系是怎么制定的 marking 是怎么做的? CAP模型,是怎么管理的, 营销活动和销售是如何结合的,IT解决方案是什么 职责 懂业务,梳理解决方案。 技术架构 1 号项目。…...

鸿蒙应用开发从入门到实战(九):ArkTS渲染控制

ArkTS拓展了TypeScript,可以结合ArkUI进行渲染控制,是的界面设计具有可编程性。本文简要描述鸿蒙应用开发中的条件渲染和循环渲染。大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战…...

C# 2025年6-9月TIOBE排名增长及未来展望

根据 TIOBE 编程语言排行榜 2025 年 6 月至 9 月的公开数据,C# 的排名和市场份额变化如下(综合多个月份数据整理):一、 C# 在 2025 年 TIOBE 排行榜的连续增长趋势2025 年 6 月排名:第 5 位市场份额:4.69%2025 年 7 月排名:第 5 位市场份额:4.87%2025 年 8 月排名:第 …...

一个基于 .NET 开源、简易、轻量级的进销存管理系统

前言 最近有小伙伴在后台留言问:.NET 有值得推荐学习的进销存管理系统吗?今天大姚给大家推荐一个基于 .NET 开源、简易、轻量级的进销存管理系统:JxcLite。 项目介绍 JxcLite 是一个基于 Known 框架开发(基于 .NET Blazor 轻量级、跨平台、低代码、易扩展的插件开发框架)、…...

采用tree命令导出文件夹/文件的目录树(linux)

采用tree命令导出文件夹/文件的目录树(linux)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !…...

The 2024 ICPC Asia East Continent Online Contest (I) 4/12 A/F/G/M

M. Find the Easiest Problem 签到题,直接模拟即可点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; using pii=pair<int,int>; using ll = long long; using ull = unsigned long long; const ll inf = 1e18; const int mod = …...

深入解析 JVM 类加载机制:从字节码到运行时对象

一、概述:为什么需要类加载? Java 语言的核心特性之一是"一次编写,到处运行",这背后的关键在于 Java 虚拟机(JVM)和其类加载机制。当我们编写好 Java 代码并将其编译为 .class 字节码文件后,这些静态的字节码需要被加载到 JVM 中才能变为可执行的动态对象。类…...

博弈论学习(第二天)

博弈的基本理性假设: 一般来说,对于研究博弈问题,需要假设参与者具有完美理性,这分三方面,第一个就是参与者的偏好要有一定性,比如对风险的偏好,不能说一个参与者做第一个决策时属于风险接受型,而做第二个决策时就属于风险规避型。第二个就是参与者对所参与决策的问题具…...

PHP 和 Elasticsearch:给你的应用加个强力搜索引擎

PHP 和 Elasticsearch:给你的应用加个强力搜索引擎 现在做 Web 应用,搜索功能基本是标配。不管你做电商、CMS 还是社交应用,用户都希望搜索又快又准。如果你用 PHP 开发,肯定遇到过数据库搜索的瓶颈——数据一多就慢得要死。这时候 Elasticsearch 就能帮大忙了。 这篇文章会…...

2025年- H146-Lc459. 重复的子字符串(字符串)--Java版 - 实践

2025年- H146-Lc459. 重复的子字符串(字符串)--Java版 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...

坚果云 坚果 jianguoyun 怎么收文件?

怎么收文件? 坚果云 坚果 jianguoyun 怎么收文件?注册、登录、免费的空间是 1GB。创建新的收集 https://www.jianguoyun.com/d/home#/ 查看收集结果:https://www.jianguoyun.com/#/...

mssql创建字段依赖

CREATE TABLE temp061_t ( ID INT IDENTITY(1,1) PRIMARY KEY, RoleType INT NOT NULL, isSior INT NULL ); ALTER TABLE temp061_t ADD CONSTRAINT chk_is_sior CHECK ( (RoleType = 1 AND isSior IS NULL) OR (RoleType = 2 AND isSior IN (0,1,2)) ); -- 合法插入 INSERT IN…...

AT_agc053_b [AGC053B] Taking the middle

考虑将先手最大转化为后手最小。 那么可以发现,第 \(i\) 次操作先手一定能让后手从 \([n - i + 1, n + i]\) 中选取最小的一个元素,一定可以。因为考虑先手拿的顺序不重要,一定存在构造方案,使得能让任意一个元素为中位数。...

一款多功能Linux服务器Web管理面板

为什么使用 Docker 部署 EasyNode? 正如您所说,Docker 部署具有显著优势: 环境隔离与一致性:所有依赖(Node.js, PM2等)都封装在容器内,与宿主机环境隔离,避免冲突。在任何支持 Docker 的 Linux 发行版上,体验完全一致。 简化安装:无需在主机上手动安装 Node.js、配置…...

2025.9.16 测试

2025.9.16 测试1. Problem A: 逆序对(reverse) 根据冒泡,只要逆序对个数够就有方案 经过思考,我们找到第一个操作个数大于的前缀,然后操作前一个前缀,这样前边变有序后,与当前数成逆序对一定是个后缀,然后根据需要选任意个即可 所以我们对任意方案构造出了 \(= 2\) 的解 …...

题解:P12558 [UOI 2024] Heroes and Monsters

题面: (这个没交洛谷,给学弟写的。) \(O(n^3)\) 考虑直接求出所有 \(ans_i\),前缀和回答询问。 \(a,b\) 先排序。由于我们只关心英雄的集合,所以怪兽我们贪心选择,如果我们选这个英雄那么选最前面的怪兽,否则选后面第一个能打死自己的怪兽。显然,合法方案怪兽的前缀会…...

数据分析与产品、运营、市场之间如何有效对齐 - 详解

数据分析与产品、运营、市场之间如何有效对齐 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monosp…...

(附源码)基于Java的学生托管系统的设计与实现 - 实践

(附源码)基于Java的学生托管系统的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mono…...

SVG动画优化全攻略:从设计到性能提升

本文详细介绍了如何通过清洁设计、路径简化、代码分层和元素复用等技术优化SVG动画,涵盖工具选择、结构设计到CSS动画实现的全流程,帮助开发者创建高性能的SVG动画效果。粉碎动画第四部分:优化SVG SVG动画让我回想起童年观看的汉纳-巴伯拉卡通片。像《Wacky Races》、《The …...

【GitHub每日速递 250919】MCP 生态新工具!Registry 服务器注册服务预览版,AI 开发者部署认证全流程揭秘

原文:https://mp.weixin.qq.com/s/vpm5exQj1imATtK6edQjZA gRPC-Go:高性能开源RPC框架,使用攻略及常见问题全解析 [grpc-go] 是一个基于 HTTP/2 的高性能远程过程调用(RPC)框架的 Go 语言实现。简单讲,它让不同服务能高效地通过网络互相调用函数。适用人群:Go 语言开发者…...

多元积性函数

定义:若函数 \(f(n,m)\) 满足 \(ab \perp xy \Rightarrow f(ax,by)=f(a,b)f(x,y)\),则称 \(f\) 为二元积性函数。 积性分解:将 \(x=\prod p_i^{\alpha _i},y=\prod p_i^{\beta _i}\),则有 \(f(x,y)=\prod f(p_i^{\alpha_i},p_i^{\beta_i})\)。 二元迪利克雷卷积:\((f*g)(n…...

MX 练石 2026 NOIP #7

好难好难好难好难,为数不多的罚坐了。MX 练石 2025 NOIP #6 链接:link 题解:link 时间:4h20min (2025.09.18 13:50~18:10) 题目数:4 难度:A B C D估分:50 + 10 + 10 + 10 = 80 得分:场祭 读题。 开 A,发现可以转化为 \(a_i - i \le a_j - j \land b_i - i \ge b_j - j…...

用Qt打造永远运行的程序/守护进程/程序启动器/实时监测程序运行/后台运行

一、前言说明 最近有个定制需求,希望程序能够一直运行,比如在windows上运行的程序,很可能无法保证不出故障崩溃,有时候可能是程序内部处理异常导致的崩溃,比如有些数据解析没有考虑到一些极端的情况,还有就是用户主动关闭了程序,可能是误关闭,而有些程序,又必须7*24小…...

传话游戏 题解

详细揭秘传话游戏 题解 题目描述 初始时你有一个长度为 \(m\) 的字符串 $ S_1 $ ,然后你可以进行 $ n-1 $ 次操作,每次操作修改当前字符串,形如删掉其中某些元素(可以全删,也可以都不删)。第 \(i\) 次操作得到的字符串记为 $ S_{i+1} $ ,这样得到了由 \(n\) 的字符串形成…...

智驾芯片三强对决:征程6P vs EyeQ Ultra vs Thor

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087智能驾驶芯片是自动驾驶技术的「中枢神经」,其性能直接关乎车辆感知决策的精准度与响应速度。当前,全球智驾芯片市场呈现多元…...

0132_访问者模式(Visitor)

访问者模式(Visitor) 意图 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 UML 图优点开闭原则:容易添加新的访问者操作,无需修改元素类 单一职责原则:将相关行为集中到一个访问者对象中 灵活性:可以在运行…...

国内AI云市场:挤不进前三,生存将成问题!

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087中国AI云市场已形成“一大四强”的格局,阿里云以35.8%的份额独占鳌头,而第五名之后的厂商合计市场份额不足25%,在残酷的竞争…...

P14053 [SDCPC 2019] Median 题解

P14053 [SDCPC 2019] Median 题解P14053 [SDCPC 2019] Median 题解 一道水题。 观察题意,很快我们可以发现,对于元素 \(i\),其合不合法取决于一定大于 \(i\) 的数的个数与一定小于 \(i\) 的数的个数。 这时,我们只需要统计有多少数大于 \(i\),与多少数小于 \(i\) 即可。 只…...

lQueryDef查询Evaluate报该几何不包含M值问题。

地理数据库既包括空间,又包括属性,属性类似于SQL表,理论上支持标准SQL查询。lQueryDef接口提供了高效查询方法,适用于对属性表或要素类的属性进行筛选和检索。 问题描述 一个简单的面积求和示例如下:IQueryDefFactory queryDefFactory = (IQueryDefFactory)workspace; IQu…...

我的首个RCE漏洞发现之旅:Apache ActiveMQ远程代码执行实战

本文详细讲述了作者如何通过系统化的子域名枚举和端口扫描,发现Apache ActiveMQ的CVE-2023-46604远程代码执行漏洞的全过程,包含具体的工具使用方法和实战技巧。我的首个RCE漏洞发现经历 大家好!在这篇文章中,我将分享我的第一个远程代码执行(RCE)漏洞发现经历。这次漏洞…...

北京市社保费用差额补缴计算工具

北京市社保费用差额补缴计算工具9月18日北京市发布了社会保险缴费工资基数上下限调整的通告,自2025年7月起,社保基数下限由原来的 6821元提高到7162元。 这样一来,之前已经缴了7月份社保且社保基数不到7162元的就需要补缴了。 根据我缴社保时看到的数据,我写了一个北京市社…...

使用自签名SSL证书有什么风险?

自签名SSL证书,指的是由用户自行生成密钥对并予以签名的证书,无需经由第三方权威证书颁发机构(CA)审核。鉴于其具备零成本、生成便捷的特性,该证书常被应用于个人测试、内部临时服务等非生产场景。 然而,相较于权威CA颁发的IP SSL证书,自签名证书在信任机制、安全性、兼…...

CDN可以使用iTrustSSL通配符证书吗?

CDN,即内容分发网络,它是一种通过在多个地理位置分散部署服务器节点,将网站的内容缓存并分发到离用户最近的节点上,从而显著提高网站内容的访问速度、降低延迟,并减轻源服务器负载的技术架构。借助CDN,网站能够更快地响应用户的请求,为用户提供流畅的浏览体验。而SSL证书…...

OpenCvSharp基于颜色反差规避FBA面单贴标

01 规避原理 1.抠图,根据色差或者根据固定包裹位置以及包裹尺寸抠出纸箱图片 2.色差,获取纸箱上所有背景色的灰度值 3.采图,采集大量视野相同,光源相同面单的色差灰度值,整理区间 4.取反,所有非面单灰度值区间的,都认为是纸箱背景色 02根据DPI计算1mm对应像素点。获取吸…...

【API接口】最新可用手机号归属地查询接口

最新可用手机号归属地查询接口,查询手机号码归属地、所属号段、手机卡类型、运营商等信息 使用之前您需要先去注册下key 申请地址: https://www.52api.cn 接口地址:https://www.52api.cn/api/mobile_location 返回格式:application/json 请求方式:GET/POST 请求示例:htt…...

【API接口】最新可用IP地址查询接口

最新可用IP地址查询接口,精准定位IPV4地址的地理位置信息,包括国家、城市、地区、运营商等详细数据,内置双线路来确保数据可用性 使用之前您需要先去注册下key 申请地址: https://www.52api.cn 接口地址:https://www.52api.cn/api/ip_query 返回格式:application/json 请…...

UE5创建的对象无法用ai操控

UE5创建的对象无法用ai操控记得更改这个设置...