前言
第1章 概论
1.1 基本概念和术语
1.1.1 逻辑结构
1.1.2 存储结构
1.2 算法的描述与分析
1.2.1 算法描述
1.2.2 算法分析
1.2.3 时间复杂度
1.2.4 空间复杂度
本章小结
习题
第2章 线性表
2.1 线性表及其逻辑结构
2.1.1 线性表的定义
2.1.2 线性表的运算
2.2 线性表的顺序存储
2.2.1 顺序表结构
2.2.2 顺序表的基本操作
2.3 线性表的链式存储
2.3.1 单链表结构
2.3.2 单链表的基本操作
2.4 单向循环链表
2.5 双向循环链表
2.5.1 双向链表
2.5.2 双向循环链表
本章小结
习题
第3章 栈和队列
3.1 栈
3.1.1 栈的定义与基本运算
3.1.2 顺序栈
3.1.3 链栈
3.2 队列
3.2.1 队列的定义及基本运算
3.2.2 顺序队列
3.2.3 链队列
3.3 栈和队列的应用
3.3.1 栈的应用
3.3.2 队列的应用
本章小结
习题
第4章 串
4.1 串及其运算
4.1.1 串的基本概念
4.1.2 串的基本运算
4.2 串的存储结构
4.2.1 串的顺序存储
4.2.2 串的链式存储
4.3 串运算的实现
4.4 串的模式匹配运算
4.4.1 有回溯的模式匹配算法(BF算法)
4.4.2 无回溯的模式匹配算法(KMP算法)
本章小结
习题
第5章 数组和广义表
5.1 数组
5.1.1 数组的定义
5.1.2 数组的顺序存储
5.2 矩阵的压缩存储
5.2.1 特殊矩阵
5.2.2 稀疏矩阵
5.3 广义表
5.3.1 广义表的定义与运算
5.3.2 广义表的存储
本章小结
习题
第6章 树
6.1 树的概念
6.1.1 树的定义
6.1.2 树的基本术语
6.1.3 树的基本操作
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.3 遍历二叉树
6.3.1 二叉树遍历方法
6.3.2 二叉树遍历的递归算法
6.3.3 二叉树遍历的非递归算法
6.4 二叉树的递归编程应用
6.5 线索二叉树
6.5.1 线索二叉树的概念及存储
6.5.2 有关线索二叉树的算法
6.6 树和森林
6.6.1 树的存储结构
6.6.2 树、森林和二叉树的转换
6.7 哈夫曼树及哈夫曼编码
本章小结
习题
第7章 图
7.1 图的基本概念
7.1.1 图的定义
7.1.2 图的基本术语
7.2 图的存储结构
7.2.1 邻接矩阵
7.2.2 邻接表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.4 生成树
7.4.1 生成树
7.4.2 最小生成树
7.5 最短路径
7.5.1 单源点最短路径
7.5.2 所有顶点对之间的最短路径
7.6 拓扑排序
7.6.1 顶点活动网
7.6.2 拓扑排序
本章小结
习题
第8章 排序
8.1 基本概念
8.2 插入排序
8.2.1 直接插入排序
8.2.2 希尔排序
8.3 交换排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 选择排序
8.4.1 直接选择排序
8.4.2 堆排序
8.5 归并排序
8.6 排序方法的比较和选择
8.6.1 排序方法的比较
8.6.2 排序方法的选择山
本章小结
习题
第9章 查找
9.1 基本概念
9.2 线性表的查找
9.2.1 顺序查找
9.2.2 二分查找
9.2.3 分块查找
9.3 树上的查找
9.4 散列查找
9.4.1 基本概念
9.4.2 散列函数的构造方法
9.4.3 冲突处理方法
9.4.4 散列查找及分析
本章小结
附录
参考文献