第1章 绪论 1
1.1 引言 1
1.1.1 学习目的 1
1.1.2 课程内容 1
1.2 基本概念 2
1.2.1 数据与数据结构 2
1.2.2 数据类型与抽象数据类型 5
1.3 算法 8
1.3.1 算法的概念 8
1.3.2 算法描述 9
1.3.3 算法分析 10
1.4 Java提供的泛型方法 12
1.4.1 使用Object类表示泛型 12
1.4.2 使用Comparable接口类型表示泛型 13
小结 14
习题1 14
第2章 线性表 17
2.1 线性表及其基本操作 17
2.1.1 线性表的基本概念 17
2.1.2 抽象数据类型描述 18
2.1.3 线性表的存储和实现 18
2.2 线性表的顺序存储 18
2.2.1 顺序表 18
2.2.2 顺序表的基本操作实现 20
2.3 线性表的链式存储和实现 24
2.3.1 单链表 25
2.3.2 单链表的基本操作实现 27
2.3.3 其他链表 31
2.4 顺序表与链表的比较 32
小结 32
习题2 33
第3章 栈和队列 35
3.1 栈 35
3.1.1 栈的基本概念 35
3.1.2 栈的抽象数据类型描述 35
3.1.3 顺序栈 35
3.1.4 链栈 38
3.2 队列 42
3.2.1 队列的基本概念 42
3.2.2 队列的抽象数据类型描述 42
3.2.3 顺序队列 43
3.2.4 链队列 47
3.2.5 优先级队列 49
3.3 栈和队列的比较 52
小结 52
习题3 53
第4章 串和数组 56
4.1 串 56
4.1.1 串的基本概念 56
4.1.2 串的抽象数据类型描述 56
4.1.3 顺序串 57
4.1.4 链串 61
4.2 串的模式匹配 61
4.2.1 Brute-Force算法 61
4.2.2 KMP算法 62
4.3 数组 66
4.3.1 数组的基本概念 66
4.3.2 数组的特性 67
4.3.3 数组的遍历 67
4.4 特殊矩阵的压缩存储 68
4.4.1 三角矩阵的压缩存储 68
4.4.2 对称矩阵的压缩存储 69
4.4.3 对角矩阵的压缩存储 69
4.4.4 稀疏矩阵的压缩存储 69
小结 72
习题4 73
第5章 树形结构 75
5.1 树 75
5.1.1 树的基本概念 75
5.1.2 树的术语 76
5.2 二叉树 77
5.2.1 二叉树的基本概念 77
5.2.2 二叉树的性质 77
5.2.3 二叉树的存储结构 78
5.2.4 二叉树的遍历 80
5.2.5 二叉树遍历算法的应用 84
5.2.6 二叉树的建立 86
5.3 哈夫曼树及哈夫曼编码 88
5.3.1 哈夫曼树的基本概念 88
5.3.2 哈夫曼树的构造 89
5.3.3 哈夫曼编码 90
5.3.4 构造哈夫曼树和哈夫曼编码的类的描述 90
5.4 树和森林 92
5.4.1 树的存储结构 92
5.4.2 树的遍历规则 93
小结 93
习题5 93
第6章 图 96
6.1 图概述 96
6.1.1 图的基本概念 96
6.1.2 图的抽象数据类型描述 98
6.2 图的存储结构 98
6.2.1 邻接矩阵 98
6.2.2 邻接表 102
6.3 图的遍历 107
6.4 最小生成树 112
6.4.1 最小生成树的基本概念 112
6.4.2 Kruskal算法 112
6.4.3 Prim算法 113
6.5 最短路径 115
6.5.1 求某个顶点到其余顶点的最短路径 115
6.5.2 求任意两个顶点间的最短路径 116
6.6 拓扑排序和关键路径 117
6.6.1 拓扑排序 118
6.6.2 关键路径 119
小结 121
习题6 121
第7章 排序 124
7.1 排序概述 124
7.1.1 排序的基本概念 124
7.1.2 排序算法的性能评价 124
7.1.3 待排序的记录和顺序表的类描述 124
7.2 插入排序 125
7.2.1 直接插入排序 125
7.2.2 希尔排序 127
7.3 交换排序 128
7.3.1 冒泡排序 128
7.3.2 快速排序 129
7.4 选择排序 132
7.4.1 直接选择排序 132
7.4.2 堆排序 134
7.5 归并排序 136
小结 140
习题7 140
第8章 查找 143
8.1 查找的基本概念 143
8.1.1 什么是查找 143
8.1.2 查找表 143
8.1.3 平均查找长度 143
8.2 静态表查找 144
8.2.1 顺序查找 144
8.2.2 二分查找 144
8.2.3 分块查找 145
8.3 动态表查找 146
8.3.1 二叉排序树查找 146
8.3.2 平衡二叉树 150
8.3.3 B-树和B+树 153
8.4 哈希表查找 153
8.4.1 哈希表的概念 153
8.4.2 哈希函数 154
8.4.3 解决冲突的方法 155
8.4.4 哈希表查找性能分析 156
小结 158
习题8 159
附录A 数据结构试卷 161
数据结构试卷(一) 161
数据结构试卷(二) 164
数据结构试卷(三) 166
数据结构试卷(四) 168
数据结构试卷(五) 170
附录B 实践题 173
参考文献 219