前言:
单链表是数据结构中最基础、最核心的线性表之一,也是考研、笔试、面试必考内容。本文将从零带你深入理解单链表,包含结构定义、创建、头插、尾插、任意位置插删、遍历、面试算法题等全套内容,代码可直接运行。
一、什么是单链表?
单链表是一种物理存储单元上非连续、非顺序的线性存储结构。数据元素的逻辑顺序通过链表中的指针链接实现。
每个节点由两部分组成:
-
数据域:存储当前节点的数据
-
指针域:指向后继节点的地址
与数组相比:
-
数组支持随机访问,但插入删除效率低
-
单链表不支持随机访问,但插入删除效率高
-
单链表可动态分配内存,空间更加灵活
二、单链表与双向链表的关系
-
单链表是最基础的链表结构,只有一个后继指针 next 。
-
双向链表是单链表的扩展,增加了前驱指针 prev 。
-
单链表只能从前向后遍历。
-
双向链表支持双向遍历,操作更方便,但占用空间更大。
-
简单理解:双向链表 = 单链表 + 反向查找能力。
三、单链表结构定义(C语言)

四、基础工具函数
-
创建新节点

-
遍历链表

-
获取链表长度

五、单链表插入操作
-
头部插入

-
尾部插入

-
任意位置插入

六、单链表删除操作
-
头部删除

-
尾部删除

-
任意位置删除

七、LeetCode 面试高频算法题
-
LeetCode 206. 反转链表

-
LeetCode 141. 环形链表

-
LeetCode 876. 链表的中间结点

-
LeetCode 19. 删除链表的倒数第 N 个结点

-
LeetCode 21. 合并两个有序链表

八、面试常问问题
-
数组和单链表的区别?
-
头插法和尾插法的区别与应用场景?
-
单链表的优缺点是什么?
-
如何找到链表倒数第 K 个节点(LeetCode 19 思想)?
-
反转链表的迭代与递归思路?
-
快慢指针能解决哪些链表问题?
九、总结
-
单链表是非连续存储结构,依靠指针串联节点。
-
插入、删除效率高,访问效率低。
-
头插、尾插、任意位置插删是必须掌握的核心操作。
-
LeetCode 206、141、876、19、21 是面试最高频链表题。
-
单链表是学习栈、队列、哈希表、二叉树等结构的重要基础。
十、结束语
如果这篇文章对你有帮助,欢迎 点赞、收藏、转发 给一起学习的小伙伴!
本文代码完整可直接运行,适合期末作业、考研复习、面试准备。
感谢阅读,祝你学习进步!