news 2026/1/12 7:37:10

【数据结构】单链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【数据结构】单链表

目录

引言

什么是单链表

基本概念

核心特点:

单链表图解

单链表的实现

1.手动创建链表

测试结果

2.单链表结构

链表打印

创建新结点

尾插 时间复杂度O(N)

尾插测试

头插 时间复杂度O(1)

头插测试

尾删 时间复杂度O(N)

尾删测试

头删 时间复杂度O(1)

头删测试

查找 时间复杂度O(N)

查找测试

​编辑

在指定位置之前插入数据 时间复杂度O(N)

测试​编辑

在指定位置后插入代码 时间复杂度O(1)

测试

删除pos结点 时间复杂度O(N)

测试

删除pos结点 时间复杂度O(1)

销毁链表 时间复杂度O(N)


代码放在下面链接啦,希望能对你有帮助~

戊苯菌/数据结构https://gitee.com/jiang-bos-blog-post/data-structure

引言

单链表是数据结构中的基础与经典,它以节点为单位,在非连续的内存空间中通过指针串联数据,形成逻辑上的线性序列。相比数组的静态连续存储,单链表天生具有动态扩展的能力,插入与删除节点只需调整指针,避免了大规模数据搬移的开销,尤其适合频繁变动的场景。然而,灵活性的代价是失去了随机访问的便捷,每一次查找都可能需要从头遍历。这种在时间与空间、顺序与链式之间的取舍,正是理解链表价值的关键所在。

什么是单链表

基本概念

单链表是一种线性数据结构,它通过指针将一组非连续的内存空间(节点)按特定顺序连接起来。

核心特点:

  1. 动态结构:内存空间按需分配,不需要预先确定大小

  2. 非连续存储:节点在内存中可以分散存储

  3. 单向链接:每个节点只能找到它的后继节点,不能直接找到前驱节点

单链表图解

通过上图,我们也不难看出,单链表实际上就是很多个结点结构如同火车车厢般链接(每个结点的指针都指向下一个结点,最后一个结点指向NULL)

单链表的实现

1.手动创建链表

测试结果

2.单链表结构

就像我们概念部分所介绍,单链表实际上包含存储数据部分和链接下一节点的指针,内容如上

链表打印

创建新结点

尾插 时间复杂度O(N)

尾插测试

头插 时间复杂度O(1)

头插测试

尾删 时间复杂度O(N)

尾删测试

头删 时间复杂度O(1)

头删测试

查找 时间复杂度O(N)

查找测试

在指定位置之前插入数据 时间复杂度O(N)

测试

在指定位置后插入代码 时间复杂度O(1)

测试

删除pos结点 时间复杂度O(N)

测试

删除pos结点 时间复杂度O(1)

测试

销毁链表 时间复杂度O(N)

推荐对头部进行改变(头插,头删等时间复杂度低)

感谢您看到这里,不知是否可以为博主留下一个点赞或评论呢?这对博主很有用,同时有问题或争论可以在评论区提出~感谢支持~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/7 3:25:33

运行中JAR包替换原理与实践

jar包正在运行中,为什么可以被替换?这是一个很好的问题,涉及操作系统、JVM和文件系统的底层机制。简单来说:运行中的JAR文件可以被替换,是因为操作系统允许已打开的文件被删除或重写,但JVM仍然持有原文件的…

作者头像 李华
网站建设 2026/1/8 11:22:47

pako测试实战:从压缩算法到质量保证的完整指南

在数据压缩的世界里,pako库就像是一个精密的工具套装,为JavaScript开发者提供了强大的zlib压缩能力。然而,如何确保这套工具在各种场景下都能精准工作,就需要一套完善的测试体系来保驾护航。 【免费下载链接】pako high speed zli…

作者头像 李华
网站建设 2026/1/7 1:30:28

电机试验平台的基本概念

电机试验平台是一种用于测试电机性能、效率和可靠性的专用设备。通过模拟实际运行条件,对电机进行各种参数的测量和分析。这类平台广泛应用于工业制造、科研开发和产品质量控制领域。电机试验平台的主要功能电机试验平台通常具备多种测试功能,包括但不限…

作者头像 李华
网站建设 2026/1/9 12:00:49

DAY10@浙大疏锦行

笔记:东西太多了 还是得再多看看文档作业:

作者头像 李华
网站建设 2026/1/7 5:12:22

数据结构初开课:栈的实现

本次编译环境为VS2022 文章目录前言栈的实现1.什么是栈2.栈的实现一.头文件和源文件的创建以及头文件中的内容二.功能代码的实现1.定义和销毁2.增加和删除3.判断空 找栈顶 获取栈中的个数总结前言 在我们了解完链表:单链表和双链表后 我们将开始 栈和队列的学习 今…

作者头像 李华
网站建设 2026/1/9 12:45:30

进阶数据结构Splay应用-维护数列

目录*引言*题目-维护数列问题分析算法步骤实现细节代码实现引言 该问题几乎包含了所有的splaysplaysplay操作, 如果不了解splaysplaysplay可以单击这里 题目-维护数列 问题分析 因为涉及到区间翻转操作, 线段树无法实现(线段树解决的是区间属性问题) 其实最复杂的操作是求区…

作者头像 李华