主题
数据结构
专题说明
本专题已经重组为一套从零起步、逐步递进的数据结构课程。章节顺序不再按“知识点堆叠”展开,而是按照“抽象模型 -> 线性结构 -> 树与图 -> 查找与排序 -> 工程实践”的主线推进。
学习定位
数据结构是程序设计与算法分析之间的桥梁课程。它研究的不是“容器名字的集合”,而是三个更根本的问题:数据之间是什么关系、这些关系如何映射到内存、不同操作为什么会呈现不同的复杂度。数组为什么访问快、链表为什么插入灵活、堆为什么适合优先队列、哈希表为什么平均查找快、图为什么能表达复杂连接关系,这些都属于数据结构的核心议题。
本专题的写法不是应试提纲,而是课程讲义。每章都会尽量同时覆盖四个层面:
- 理论定义与核心不变量。
- 图示和内存视角。
- Go 代码实现与边界条件。
- 复杂度、适用场景与工程权衡。
章节导航
未登录状态下默认开放第一章,其余章节登录后可继续学习。
- 第二章 数组、切片与链表
- 第三章 栈、队列、双端队列与递归
- 第四章 树、二叉搜索树与堆
- 第五章 哈希表、集合与并查集
- 第六章 图、遍历与最短路径
- 第七章 查找、排序与选择问题
- 常见排序算法图解
- 十大经典排序算法对比
- 第八章 数据结构比较与工程实践
进阶篇
学习建议
先把模型建起来,再背术语
建议先通读第一章到第三章,先建立“抽象数据类型、内存布局、基本操作、复杂度”这一主线,再进入树、图和哈希。若一开始就试图机械记忆术语,很容易形成碎片化理解,最后只会背定义,不会解释原因。
用 Go 代码验证抽象概念
阅读定义时,要立刻思考它在 Go 里如何表示:数组和切片如何共享底层内存,链表节点怎样连接,队列如何避免头部搬移,树节点如何递归定义,图如何用邻接表表达。只有把抽象概念落实到代码表示上,才能真正掌握。
不只问“会不会写”,还要问“为什么这样写”
每学完一种结构,都应回答四个问题:
- 它维护了什么不变量。
- 它的核心操作为什么是这个复杂度。
- 它最容易出错的边界条件是什么。
- 它和上一章结构相比,换来的收益和代价分别是什么。
长期坚持这种“结构 + 代码 + 复杂度 + 比较”的学习方式,数据结构知识就会逐步形成体系。
核心课学完,再进进阶篇
建议先把前 8 章学扎实,再进入进阶篇。AVL、红黑树、最小生成树、拓扑动态规划这些内容,虽然仍属于数据结构课程主线,但它们默认你已经真正理解了树高、旋转、堆、并查集、BFS/DFS、复杂度比较这些基础概念。
