第1章 绪论 1
1.1 数据结构的概念 1
1.2 为什么要学习数据结构 3
1.3 算法 4
本章小结 7
本章习题 8
第2章 线性表 10
2.1 基本概念与抽象数据类型 10
2.2 顺序表示 12
2.3 链式表示 14
2.4 单链表的改进和扩充 20
2.5 应用举例 23
2.6 链表相关操作的Java实现 27
本章小结 33
本章习题 33
第3章 栈和队列 36
3.1 栈 36
3.2 队列 42
3.3 堆栈与队列的Java实现 52
本章小结 56
本章习题 56
第4章 串 59
4.1 串的基本概念与抽象数据类型 59
4.2 串的存储结构 62
4.3 串运算的实现 66
4.4 KMP算法 69
本章小结 72
本章习题 73
第5章 多维数组和广义表 74
5.1 多维数组 74
5.2 矩阵的压缩存储 76
5.3 广义表 84
本章小结 89
本章习题 89
第6章 树 91
6.1 树、森林及其相关概念 91
6.2 二叉树及其相关特性 93
6.3 二叉树的存储 96
6.4 二叉树的遍历 99
6.5 线索二叉树 103
6.6 二叉树、树和森林之间的转换 108
6.7 哈夫曼树及其应用 110
6.8 二叉树相关操作的Java实现 118
本章小结 122
本章习题 122
第7章 图 125
7.1 图的概念 125
7.2 图的存储 128
7.3 图的遍历 135
7.4 生成树和最小生成树 144
7.5 最短路径 153
7.6 拓扑排序 156
7.7 关键路径 159
7.8 相关算法的Java实现 165
本章小结 171
本章习题 171
第8章 排序 175
8.1 基本概念 175
8.2 插入排序 177
8.3 交换排序 182
8.4 选择排序 188
8.5 归并排序 194
8.6 内部排序方法的比较和选择 198
8.7 排序算法的Java实现 199
本章小结 204
本章习题 204
第9章 查找 207
9.1 线性表的查找 207
9.2 树表的查找 212
9.3 散列表的查找 225
9.4 散列表(链地址法)的Java实现 234
本章小结 235
本章习题 235
第10章 经典算法分析 238
10.1 分治算法 238
10.2 动态规划算法 241
10.3 贪心算法 245
10.4 回溯算法 249
10.5 分支限界算法 251
本章小结 255
本章习题 255
参考文献 256
展开