第1章 基本概念
1.1 概观:系统生命周期
1.2 指针和动态存储分配
1.2.1 指针
1.2.2 动态存储分配
1.2.3 指针隐患
1.3 算法形式规范
1.3.1 综论
1.3.2 递归算法
1.4 数据抽象
1.5 性能分析
1.5.1 空间复杂度
1.5.2 时间复杂度
1.5.3 渐近记号(O,Q,)
1.5.4 实际复杂度
1.6 性能度量
1.6.1 定时
1.6.2 生成测试数据
1.7 参考文献和选读材料
第2章 数组和结构
2.1 数组
2.1.1 数组的抽象数据类型
2.1.2 c语言的数组
2.2 数组的动态存储分配
2.2.1 一维数组
2.2.2 二维数组
2.3 结构体和联合体
2.3.1 结构体
2.3.2 联合体
2.3.3 结构的内部实现
2.3.4 自引用结构
2.4 多项式
2.4.1 多项式的抽象数据类型
2.4.2 多项式的表示
2.4.3 多项式加法
2.5 稀疏矩阵
2.5.1 稀疏矩阵的抽象数据类型
2.5.2 稀疏矩阵的表示
2.5.3 矩阵转置
2.5.4 矩阵相乘
2.6 多维数组的表示
2.7 字符串
2.7.1 字符串的抽象数据类型
2.7.2 C语言的字符串
2.7.3 模式匹配
2.8 参考文献和选读材料
2.9 补充习题
第3章 栈与队列
3.1 栈
3.2 动态栈
3.3 队列
3.4 动态循环队列
3.5 迷宫问题
3.6 表达式求值
3.6.1 表达式
3.6.2 后缀表达式求值
3.6.3 中缀表达式转换成后缀表达式
3.7 多重栈与多重队列
3.8 补充习题
第4章 链表
4.1 单向链表
4.2 用C语言表示单向链表
4.3 链式栈与链式队列
4.4 多项式
4.4.1 多项式表示
4.4.2 多项式加法
4.4.3 销毁多项式
4.4.4 循环链表与多项式
4.4.5 小结
4.5 其它链表操作
4.5.1 单向链表操作
4.5.2 循环链表操作
4.6 等价类
4.7 稀疏矩阵
4.7.1 稀疏矩阵表示
4.7.2 输入稀疏矩阵
4.7.3 输出稀疏矩阵
4.7.4 销毁稀疏矩阵
4.8 双向链表
第5章 树
5.1 引论
5.1.1 术语
5.1.2 树的表示
5.2 二叉树
5.2.1 二叉树的抽象数据类型
5.2.2 二叉树的性质
5.2.3 二叉树的表示
5.3 遍历二叉树
5.3.1 中序遍历
5.3.2 先序遍历
5.3.3 后序遍历
5.3.4 非递归(循环)中序遍历
5.3.5 层序遍历
5.3.6 不设栈遍历二叉树
5.4 其它二叉树操作
5.4.1 复制二叉树
5.4.2 判断两个二叉树全等
5.4.3 可满足性问题
5.5 线索二叉树
5.5.1 线索
5.5.2 中序遍历线索二叉树
5.5.3 线索二叉树插入结点
5.6 堆
5.6.1 优先级队列
5.6.2 大根堆定义
5.6.3 大根堆插入操作
5.6.4 大根堆删除操作
5.7 二叉查找树
5.7.1 定义
5.7.2 二叉查找树的查找
5.7.3 二叉查找树的插入
5.7.4 二叉查找树的删除
5.7.5 二叉查找树的合并与分裂
5.7.6 二叉查找树的高度
5.8 选拔树
5.8.1 引子
5.8.2 优胜树
5.8.3 淘汰树
5.9 森林
5.9.1 森林转换为二叉树
5.9.2 遍历森林
5.10 不相交集合的表示
5.10.1 引子
5.10.2 合并与查找操作
5.10.3 划分等价类
5.11 二叉树的计数
5.11.1 不同态二叉树
5.11.2 栈置换
5.11.3 矩阵乘法
5.11.4 不同二叉树的数目
5.12 参考文献和选读材料
第6章 图
6.1 图的抽象数据类型
6.1.1 引子
6.1.2 图的定义和术语
6.1.3 图的表示
6.2 图的基本操作
6.2.1 深度优先搜索
6.2.2 广度优先搜索
6.2.3 连通分量
6.2.4 生成树
6.2.5 重连通分量
6.3 最小代价生成树
6.3.1 Kruskal算法
6.3.2 Prim算法
6.3.3 SoUin算法
6.4 最短路径和迁移闭包
6.4.1 单源点至所有其它节点:边权值非负
6.4.2 单源点至所有其它节点:边权值正负无限制
……
第7章 排序
第8章 Hash法
第9章 优先级队列
第10章 高效二叉查找树
第11章 多路查找树
第12章 数字查找结构
索引