第1章 初识数据结构
1.1 数据结构讨论范畴
1.2 基本概念
1.3 数据的逻辑结构
1.4 数据的物理结构
1.5 算法描述与分析
1.5.1 算法的描述
1.5.2 算法的分析
本章小结
习题与思考
第2章 重要的C语言概念
2.1 内存分配
2.1.1 静态内存分配
2.1.2 动态内存分配
2.1.3 C语言程序编译的内存分配
2.2 结构数组和结构指针
2.2.1 结构数组
2.2.2 结构指针
2.2.3 位结构
2.3 C语言常见问题分析
2.3.1 指针和数组
2.3.2 分支语句
2.3.3 函数编写
2.3.4 void及void指针
2.3.5 关于C语言的高效编程
2.3.6 其他若干问题
本章小结
习题与思考
第3章 线性表
3.1 线性表的概念
3.1.1 线性表的定义
3.1.2 线性表的抽象数据类型描述
3.2 线性表的顺序存储
3.2.1 顺序表的定义
3.2.2 顺序表的基本运算
3.3 单向链表
3.3.1 单向链表的基本概念
3.3.2 单向链表的存储表示
3.3.3 单向链表的基本操作
3.4 循环链表
3.5 双向链表
3.5.1 双向链表的基本概念
3.5.2 双向链表的基本操作
3.6 应用实践
3.6.1 单向链表排序问题
3.6.2 自动预订飞机票问题
3.6.3 约瑟夫(Joseph)环问题
本章小结
习题与思考
第4章 栈与队列
4.1 栈
4.1.1 栈的定义
4.1.2 栈的顺序存储
4.1.3 栈的链式存储
4.2 队列
4.2.1 队列的定义
4.2.2 队列的顺序存储
4.2.3 队列的链式存储
4.3 应用实践
4.3.1 火车车厢重排问题
4.3.2 四则运算表达式求值
4.3.3 渡口管理问题
4.3.4 农夫过河问题
本章小结
习题与思考
第5章 串、多维数组与特殊矩阵
5.1 串
5.1.1 串的类型定义
5.1.2 串的顺序存储
5.1.3 串的链式存储
5.2 串的模式匹配
5.2.1 模式匹配的简单算法
5.2.2 KMP算法
5.2.3 KMP模式匹配改进算法
5.3 多维数组
5.3.1 多维数组的类型定义
5.3.2 多维数组的顺序存储表示
5.4 特殊矩阵的压缩存储
5.4.1 对称矩阵
5.4.2 三角矩阵
5.4.3 对角矩阵
5.5 稀疏矩阵
5.5.1 稀疏矩阵的三元组表示法
5.5.2 稀疏矩阵的十字链表法
5.6 应用实践
5.6.1 汉诺塔问题
5.6.2 最长重复字串
5.6.3 稀疏矩阵的相加
5.6.4 中文分词
本章小结
习题与思考
第6章 树
6.1 树的基本概念
6.2 二叉树
6.2.1 二叉树的基本概念
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.2.4 二叉树的遍历
6.2.5 二叉树的构造
6.3 树和森林
6.3.1 树、森林与二叉树的转换
6.3.2 树和森林的存储表示
6.3.3 树和森林的遍历
6.4 线索二叉树
6.4.1 线索二叉树的基本概念
6.4.2 线索二叉树的基本操作
6.5 二叉排序树
6.5.1 二叉排序树的基本概念
6.5.2 二叉排序树的生成
6.5.3 二叉排序树的插入
6.5.4 二又排序树的删除
6.6 应用实践
6.6.1 等价类问题
6.6.2 最优二叉树(哈夫曼树)
6.6.3 判定树问题
本章小结
习题与思考
第7章 图
7.1 图的基本概念
7.2 图的存储方式
7.2.1 邻接矩阵
7.2.2 邻接表
7.2.3 关联矩阵
7.3 图的遍历
7.3.1 深度优先搜索遍历
7.3.2 广度优先搜索遍历
7.4 最小生成树
7.4.1 生成树的概念
7.4.2 最小生成树的概念
7.4.3 普里姆(Prim)算法
7.4.4 克鲁斯卡尔(Kruskal)算法
7.5 最短路径
7.5.1 单源最短路径问题
7.5. 2每一对顶点之间的最短距离
7.6 拓扑排序
7.6.1 什么是拓扑排序?
7.6.2 拓扑排序的算法
7.7 关键路径
7.8 应用实践
7.8.1 单源点最短路径问题
7.8.2 自由树的直径问题
7.8.3 医院选址问题
本章小结
习题与思考
第8章 排序
8.1 基本概念
8.2 插入排序
8.2.1 直接插入排序
8.2.2 折半插入排序
8.2.3 希尔排序
8.3 交换排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 选择排序
8.4.1 直接选择排序
8.4.2 堆排序
8.5 归并排序
8.5.1 2-路归并的迭代算法
8.5.2 2-路归并的递归算法
8.6 基数排序
8.6.1 多关键字排序
8.6.2 链式基数排序
8.7 排序方法比较
8.8 应用实践
8.8.1 荷兰国旗问题
8.8.2 双向冒泡问题
本章小结
习题与思考
第9章 查找
9.1 基本概念
9.2 静态查找
9.2.1 顺序查找
9.2.2 折半查找
9.2.3 分块查找
9.3 动态查找
9.3.1 二叉排序树查找
9.3.2 AVL搜索树
9.3.3 红黑树
9.3.4 B-树
9.3.5 B+树
9.4 哈希查找
9.4.1 哈希表的概念
9.4.2 哈希函数的构造
9.4.3 解决冲突的方法
9.4.4 查找及分析
9.5 应用实践
9.5.1 直方图问题
9.5.2 箱子装载问题
本章小结
习题与思考
附录 关键词索引
参考文献