数据结构与算法 · 只讲数据结构本身
目标:搞懂常见数据结构「长什么样、适合干什么、为什么这么设计」。重理解、建直觉,不刷题、不背模板。
这篇教程和别的不一样
市面上大多数「数据结构与算法」教程,本质是刷题教程——上来就是 LeetCode、就是各种解题模板。这篇不是。
我们的立场是:先把「数据结构」这件工具本身理解透,比急着刷题重要得多。 你得先知道每种容器长什么样、擅长什么、代价是什么,遇到问题才知道该拿哪个出来用。就像学做菜,先认识锅、铲、刀各有什么用,比一上来背菜谱更管用。
所以这篇教程:
- 讲数据结构本身:数组、链表、栈、队列、哈希表、树、图、堆。
- 讲「为什么这么设计、适合什么场景」,而不是「怎么 AC 一道题」。
- 几乎不写可运行代码,用示意图和极少量伪代码讲清思路。
学完你能做到
- 说清楚每种数据结构的样子、擅长和不擅长什么
- 理解「大 O 复杂度」,会用直觉判断快慢
- 遇到一个问题,能想到「这该用哈希表 / 栈 / 树 / 图……」
- 看懂数据库索引、任务队列、好友推荐这些真实场景背后用了什么结构
目录(建议按顺序学)
第一部分 · 开篇
- 01 - 为什么要有这么多数据结构
- 02 - 怎么衡量快慢:大 O 复杂度
第二部分 · 线性结构
- 03 - 数组 vs 链表
- 04 - 栈:只能从一头进出
- 05 - 队列:排队叫号
- 06 - 哈希表:为什么查东西能「秒查」
第三部分 · 树形结构
- 07 - 树:从家谱到文件夹
- 08 - 二叉树与二叉搜索树
- 09 - 平衡树与 B 树:数据库为什么用它
- 10 - 堆:怎么快速找到最大/最小
第四部分 · 图结构
- 11 - 图:万物皆可连
- 12 - 图怎么存、怎么走
第五部分 · 串起来
- 13 - 遇到问题该选哪种数据结构
怎么用这份教程?
- 赶时间:先看 01、02 建立框架,再看 03、06(数组/链表 + 哈希表)这两个最高频的,就能应付大量场景。
- 想系统学:从头按顺序读,每章末尾有「小结」帮你巩固。
开始吧 → 01 - 为什么要有这么多数据结构