第1章 绪论 1
1.1 什么是数据结构 1
1.2 数据结构术语 2
1.3 算法的描述及分析 3
1.3.1 算法的描述方法 3
1.3.2 时间复杂度 4
1.3.3 空间复杂度 4
1.3.4 算法分析实例 4
习题1 6
第2章 线性表 7
2.1 逻辑结构 7
2.2 顺序存储结构 8
2.2.1 顺序存储结构的概念 8
2.2.2 顺序存储结构下的操作 9
2.2.3 效率分析 10
2.3 链式存储结构 11
2.3.1 链式存储结构的概念 11
2.3.2 链式存储结构下的操作 11
2.4 单向循环链表 16
2.5 双向循环链表 18
2.6 一元多项式的存储与运算 19
习题2 21
第3章 栈与队列 23
3.1 栈与队列的应用背景 23
3.1.1 栈的应用背景 23
3.1.2 队列的应用背景 23
3.2 堆栈 23
3.2.1 栈的定义和基本运算 23
3.2.2 栈的表示和实现 24
3.2.3 栈的应用 28
3.3 队列 34
3.3.1 队列的定义和运算 34
3.3.2 队列的存储结构 34
3.3.3 队列的应用 38
习题3 39
第4章 串 40
4.1 串及其操作 40
4.1.1 串的逻辑结构 40
4.1.2 串的基本运算 40
4.2 串的存储结构 41
4.2.1 顺序存储结构 41
4.2.2 链式存储结构 43
4.2.3 堆存储结构 43
4.3 串的基本运算实现 44
4.4 串的模式匹配运算 45
4.4.1 BF算法 45
4.4.2 无回溯的模式匹配算法 49
习题4 52
第5章 数组和广义表 53
5.1 数组的定义与运算 53
5.2 数组的顺序存储结构 54
5.3 矩阵的压缩存储 54
5.3.1 特殊矩阵 55
5.3.2 稀疏矩阵 57
5.4 广义表 62
5.4.1 广义表的定义 62
5.4.2 广义表的存储结构 63
5.4.3 广义表的基本操作 64
习题5 66
第6章 树 67
6.1 树结构的定义和基本操作 67
6.1.1 树的定义 67
6.1.2 树的基本术语 67
6.1.3 树的基本操作 68
6.2 二叉树 69
6.2.1 定义及其操作 69
6.2.2 二叉树的性质 69
6.2.3 二叉树的存储结构 70
6.3 遍历二叉树 72
6.3.1 二叉树遍历的递归算法 72
6.3.2 二叉树遍历的非递归算法 74
6.3.3 二叉树的层次遍历算法 76
6.3.4 遍历算法的应用 76
6.4 树和森林 80
6.4.1 树的存储结构 80
6.4.2 树与二叉树的转换 82
6.4.3 森林与二叉树的转换 83
6.5 树的应用 84
6.5.1 二叉排序树 84
6.5.2 哈夫曼树以及应用 88
习题6 91
第7章 图 93
7.1 图的定义和术语 93
7.2 图的存储结构 95
7.2.1 邻接矩阵 95
7.2.2 邻接表 96
7.3 图的遍历 98
7.3.1 深度优先搜索DFS 99
7.3.2 广度优先搜索BFS 100
7.4 生成树 102
7.4.1 概念 102
7.4.2 最小生成树(最小支撑树) 102
7.5 最短路径 106
7.5.1 求某源点到其余各顶点的最短路径 106
7.5.2 每对顶点之间的最短路径 108
7.6 拓扑排序 109
7.6.1 顶点活动网 110
7.6.2 拓扑排序 110
习题7 112
第8章 查找 114
8.1 线性表的查找 114
8.1.1 顺序查找 114
8.1.2 折半查找 114
8.1.3 分块查找 116
8.2 树表的查找 117
8.2.1 二叉查找树 117
8.2.2 二叉平衡树 118
8.2.3 B_树 121
8.3 哈希表 124
8.3.1 哈希表的定义 124
8.3.2 哈希函数的构造 124
8.3.3 冲突处理方法 127
8.3.4 查找及分析 128
习题8 129
第9章 排序 130
9.1 插入排序 130
9.1.1 直接插入排序 130
9.1.2 希尔排序 131
9.2 交换排序 132
9.2.1 冒泡(简单交换排序) 132
9.2.2 快速排序 133
9.3 选择排序 135
9.3.1 直接选择排序 135
9.3.2 树形选择排序 135
9.4 归并排序 139
习题9 139
参考文献 141