要想写出可复用、可扩展、易维护、灵活性好的代码,「数据结构」这一关必须要过啊!
在数据结构与算法的众多教材中,奉为经典的当属清华大学严蔚敏老师的著作。很多学校也选择这本书作为考研指定教材。
正在学习数据结构与算法这门课程的同学 或者 有意愿精进自己代码编写水平的小伙伴,可以下载这本电子书来看看。
目录
第1章 绪论
- 1.1 什么是数据结构
- 1.2 基本概念和术语
- 1.3 抽象数据类型的表示与实现
- 1.4 算法和算法分析
- 算法
- 算法设计的要求
- 算法效率的度量
- 算法的存储空间需求
第2章 线性表
- 2.1 线性表的类型定义
- 2.2 线性表的顺序表示和实现
- 2.3 线性表的链式表示和实现
- 线性链表
- 循环链表
- 双向链表
- 2.4 一元多项式的表示及相加
第3章 栈和队列
- 3.1 栈
- 抽象数据类型栈的定义
- 栈的表示和实现
- 3.2 栈的应用举例
- 数制转换
- 括号匹配的检验
- 行编辑程序
- 迷宫求解
- 表达式求值
- 3.3 栈与递归的实现
- 3.4 队列
- 抽象数据类型队列的定义
- 链队列——队列的链式表示和实现
- 循环队列——队列的顺序表示和实现
- 3.5 离散事件模拟
第4章 串
- 4.1 串类型的定义
- 4.2 串的表示和实现
- 定长顺序存储表示
- 堆分配存储表示
- 串的块链存储表示
- 4.3 串的模式匹配算法
- 求子串位置的定位函数index(s,t,pos)
- 模式匹配的一种改进算法
- 4.4 串操作应用举例
- 文本编辑
- 建立词索引表
第5章 数组和广义表
- 5.1 数组的定义
- 5.2 数组的顺序表示和实现
- 5.3 矩阵的压缩存储
- 特殊矩阵
- 稀疏矩阵
- 5.4 广义表的定义
- 5.5 广义表的存储结构
- 5.6 m元多项式的表示
- 5.7 广义表的递归算法
- 求广义表的深度
- 复制广义表
- 建立广义表的存储结构
第6章 树和二叉树
- 6.1 树的定义和基本术语
- 6.2 二叉树
- 二叉树的定义
- 二叉树的性质
- 二叉树的存储结构
- 6.3 遍历二叉树和线索二叉树
- 遍历二叉树
- 线索二叉树
- 6.4 树和森林
- 树的存储结构
- 森林与二叉树的转换
- 树和森林的遍历
- 6.5 树与等价问题
- 6.6 赫夫曼树及其应用
- 最优二叉树(赫夫曼树)
- 赫夫曼编码
- 6.7 回溯法与树的遍历
- 6.8 树的计数
第7章 图
- 7.1 图的定义和术语
- 7.2 图的存储结构
- 数组表示法
- 邻接表
- 十字链表
- 邻接多重表
- 7.3 图的遍历
- 深度优先搜索
- 广度优先搜索
- 7.4 图的连通性问题
- 无向图的连通分量和生成树
- 有向图的强连通分量
- 最小生成树
- 关节点和重连通分量
- 7.5 有向无环图及其应用
- 拓扑排序
- 关键路径
- 7.6 最短路径
- 从某个源点到其余各顶点的最短路径
- 每一对顶点之间的最短路径
第8章 动态存储管理
- 8.1 概述
- 8.2 可利用空间表及分配方法
- 8.3 边界标识法
- 可利用空间表的结构
- 分配算法
- 回收算法
- 8.4 伙伴系统
- 可利用空间表的结构
- 分配算法
- 回收算法
- 8.5 无用单元收集
- 8.6 存储紧缩
第9章 查找
- 9.1 静态查找表
- 顺序表的查找
- 有序表的查找
- 静态树表的查找
- 索引顺序表的查找
- 9.2 动态查找表
- 二叉排序树和平衡二叉树
- b-树和b+树
- 键树
- 9.3 哈希表
- 什么是哈希表
- 哈希函数的构造方法
- 处理冲突的方法
- 哈希表的查找及其分析
第10章 内部排序
- 10.1 概述
- 10.2 插入排序
- 直接插入排序
- 其他插入排序
- 希尔排序
- 10.3 快速排序
- 10.4 选择排序
- 简单选择排序
- 树形选择排序
- 堆排序
- 10.5 归并排序
- 10.6 基数排序
- 多关键字的排序
- 链式基数排序
- 10.7 各种内部排序方法的比较讨论
第11章 外部排序
- 11.1 外存信息的存取
- 11.2 外部排序的方法
- 11.3 多路平衡归并的实现
- 11.4 置换 选择排序
- 11.5 最佳归并树
第12章 文件
- 12.1 有关文件的基本概念
- 12.2 顺序文件
- 12.3 索引文件
- 12.4 isam文件和vsam文件
- isam文件
- vsam文件
- 12.5 直接存取文件(散列文件)
- 12.6 多关键字文件
- 多重表文件
- 倒排文件
附录a 名词索引
附录b 函数索引
参考书目
推荐阅读
下载《数据结构(C语言版)》
关注公众号,后台回复
20190327