图书核心特点
- 经典权威,历史悠久:自上世纪80年代首次出版以来,历经多次修订再版(最著名的是1997年的版),影响了几代计算机专业的学生和从业者,其内容体系非常成熟和稳定。
- 理论严谨,结构清晰:全书对数据结构的定义、逻辑结构和存储结构讲解得非常系统和透彻,每个章节都遵循“逻辑结构 -> 存储结构 -> 基本操作 -> 算法实现与分析”的模式,逻辑性强,易于理解。
- C语言实现,贴近底层:本书使用C语言来实现数据结构和算法,这能让读者清晰地看到指针、内存分配(
malloc,free)等底层机制是如何与数据结构结合的,对于深刻理解数据结构的本质非常有帮助。 - 习题经典,富有挑战:每章后的习题设计得非常巧妙,既有对基础概念的考察,也有需要深入思考的算法设计题,认真完成这些习题是掌握数据结构的关键。
- “大部头”,内容全面:这本书非常厚,内容覆盖了几乎所有基础和核心的数据结构,从线性表到树、图,再到查找和排序,可以说是“数据结构”领域的百科全书。
主要内容结构(以经典版为例)
全书通常分为三大部分:线性结构、非线性结构、以及查找与排序。

(图片来源网络,侵删)
第一部分:线性结构
-
第1章:绪论
- 介绍数据结构的基本概念:数据、数据元素、数据项、数据对象、数据结构。
- 讲解数据结构的“两要素”:逻辑结构(线性、树形、图状、集合)和物理结构(顺序、链式、索引、散列)。
- 介绍算法的五个基本特性(有穷性、确定性、可行性、输入、输出)和算法复杂度的分析方法(时间复杂度、空间复杂度)。
-
第2章:线性表
- 逻辑结构:线性表的定义和特点。
- 存储结构:
- 顺序表:用数组实现,讲解其优缺点(随机访问快,插入删除慢)。
- 链表:用指针实现,详细讲解单链表、双链表、循环链表的创建、插入、删除、查找等操作。
- 这是全书的基础,必须牢固掌握。
-
第3章:栈和队列
- 栈:定义(后进先出 LIFO)、顺序栈、链栈,应用场景(表达式求值、函数调用等)。
- 队列:定义(先进先出 FIFO)、循环队列、链队列,应用场景(任务调度、广度优先搜索等)。
-
第4章:串
(图片来源网络,侵删)- 串的定义和存储(顺序存储、链式存储)。
- 串的模式匹配算法:朴素模式匹配算法和KMP算法,KMP算法是本章的重点和难点。
第二部分:非线性结构
-
第5章:数组和广义表
- 数组的顺序存储和特殊矩阵的压缩存储(如对称矩阵、三角矩阵、稀疏矩阵)。
- 广义表的定义和存储结构。
-
第6章:树和二叉树
- 树的基本概念(结点、根、度、深度等)。
- 二叉树:定义、性质、存储结构(顺序存储、二叉链表)。
- 二叉树的遍历:前序、中序、后序、层序遍历(递归和非递归实现)。
- 线索二叉树。
- 树和森林:与二叉树的相互转换。
- 哈夫曼树:定义、构造算法及应用(哈夫曼编码)。
-
第7章:图
- 图的基本概念(顶点、边、弧、有向图、无向图、度、连通图等)。
- 图的存储结构:邻接矩阵和邻接表。
- 图的遍历:深度优先搜索 和 广度优先搜索。
- 图的应用:
- 最小生成树:Prim算法 和 Kruskal算法。
- 最短路径:Dijkstra算法 和 Floyd算法。
- 拓扑排序 和 关键路径(AOE网)。
第三部分:查找与排序
-
第8章:查找
(图片来源网络,侵删)- 查找的基本概念。
- 静态查找表:顺序查找、折半查找、分块查找。
- 动态查找表:二叉排序树、平衡二叉树(AVL树)、B树和B+树。
- 哈希表:哈希函数、冲突处理方法(开放地址法、链地址法)、查找效率分析。
-
第9章:排序
- 排序的基本概念和稳定性。
- 插入排序:直接插入排序、希尔排序。
- 交换排序:冒泡排序、快速排序。
- 选择排序:简单选择排序、堆排序。
- 归并排序。
- 基数排序。
- 各种排序算法的性能(时间、空间)比较。
如何学习这本书?
多且有一定难度,建议采用以下方法:
- 课前预习,带着问题听课:如果是在校学生,课前花15-20分钟浏览一下章节内容,了解要讲什么,标记出不懂的地方,如果是自学,同样需要先通读,建立知识框架。
- 动手实现,拒绝眼高手低:这是最重要的一点!书上的代码只是示例,你必须亲手将每一个重要的数据结构(链表、二叉树、图等)和算法(快速排序、KMP、Dijkstra等)用C语言完整地实现一遍,在实现的过程中,你才能真正理解指针的运用、内存的管理和算法的细节。
- 重视习题,反复推敲:每章后的习题是检验学习成果的最佳方式,特别是那些算法设计题,做完后最好能和标准答案或同学的解法进行对比,看看有没有更优的解法。
- 结合可视化工具,加深理解:对于“树”和“图”等难以在脑中构建的结构,可以借助一些在线可视化工具(如VisuAlgo)来观察它们的操作过程,这会非常直观。
- 多画图,多用“白板”:在分析算法(如快速排序的分区过程、图的遍历路径)时,一张纸或一块白板远比光看代码有效,画图能帮你理清思路。
- 不必求快,但求甚解:这本书很厚,慢慢来,特别是KMP、AVL树、Dijkstra等难点章节,可能需要反复阅读和练习才能真正掌握。
补充资源
- 在线课程:
- 浙江大学数据结构(陈越、何钦铭):中国大学MOOC(慕课)上的经典课程,讲解生动,与严蔚敏的书是绝配。
- 北京大学数据结构(邓俊辉):同样是慕课上的神课,内容更深入,适合学有余力的同学。
- 视频平台:
- Bilibili (B站):有大量UP主对这本书进行逐章讲解,搜索“严蔚敏 数据结构”即可找到,王道考研”、“CodeSheep”等UP主的视频质量都很高。
- 练习平台:
- LeetCode (力扣):在掌握了基本概念后,可以在LeetCode上找对应的题目进行刷题,将理论知识应用到实际问题中。
- PTA (程序设计类实验辅助教学平台):很多高校会使用这个平台布置作业,题目质量很高。
- 其他书籍:
- 《大话数据结构》:用非常通俗易懂的语言和大量漫画来讲解数据结构,适合作为入门读物或补充读物。
- 《数据结构与算法分析:C语言描述》:国外经典教材,更侧重于算法的分析和性能比较,视角不同,可以互相参考。
《数据结构(C语言版)》严蔚敏版是一本值得反复研读的经典之作,虽然学习曲线可能较陡,但只要你肯下功夫,亲手实践,吃透书中的每一个知识点,你的编程内功和逻辑思维能力将会得到极大的提升,祝你学习顺利!
