第1章 绪论 1
1.1 概述 1
1.2 基本概念 2
1.3 算法与算法分析 5
1.4 习题 9
第2章 线性表 11
2.1 线性表 11
2.2 线性表的顺序存储结构及其实现 13
2.2.1 顺序表描述 13
2.2.2 顺序表基本操作的实现 14
2.3 单链表 17
2.3.1 单链表描述 17
2.3.2 单链表基本操作的实现 19
2.4 双向链表 24
2.5 循环链表 29
2.6 习题 29
第3章 栈和队列 31
3.1 栈 31
3.1.1 顺序栈 31
3.1.2 链式栈 35
3.1.3 栈应用举例 37
3.1.4 栈与递归 42
3.2 队列 43
3.2.1 顺序队列 44
3.2.2 链式队列 48
3.2.3 队列应用举例 52
3.3 习题 54
第4章 数组与稀疏矩阵 56
4.1 数组 56
4.2 稀疏矩阵 58
4.2.1 矩阵的压缩存储 58
4.2.2 稀疏矩阵运算的实现 60
4.3 习题 66
第5章 树与二叉树 67
5.1 树 67
5.1.1 树的基本概念 67
5.1.2 树的存储结构 69
5.2 二叉树 72
5.2.1 定义及主要特性 72
5.2.2 二叉树的存储结构 74
5.3 遍历二叉树 77
5.4 线索二叉树 84
5.5 哈夫曼树 89
5.5.1 基本概念 89
5.5.2 哈夫曼算法 90
5.5.3 哈夫曼编码 91
5.6 习题 97
第6章 图 99
6.1 图的基本概念和存储结构 99
6.1.1 图的定义及术语 99
6.1.2 图的存储结构 101
6.2 图的遍历 104
6.2.1 深度优先遍历 104
6.2.2 广度优先遍历 110
6.3 最小生成树 113
6.3.1 Prim算法 115
6.3.2 Kruskal算法 119
6.4 拓扑排序 119
6.5 最短路径 124
6.5.1 单源最短路径 125
6.5.2 每对顶点之间的最短路径 128
6.6 习题 131
第7章 检索 132
7.1 概述 132
7.2 顺序检索 133
7.3 二分法检索 135
7.4 二叉排序树 138
7.4.1 二叉排序树 138
7.4.2 平衡二叉树 144
7.5 散列方法 149
7.5.1 散列表与散列函数 150
7.5.2 处理冲突的办法 151
7.5.3 散列表的检索 154
7.6 习题 159
第8章 排序 161
8.1 排序的基本概念 161
8.2 插入排序 162
8.2.1 直接插入排序 162
8.2.2 希尔排序 165
8.3 选择排序 167
8.3.1 直接选择排序 167
8.3.2 堆排序 169
8.4 交换排序 172
8.4.1 冒泡排序 172
8.4.2 快速排序 174
8.5 归并排序 178
8.6 习题 181
参考文献 182