目录 1
第1章 数据结构概论 1
1.1 什么是数据结构 1
1.2 数据结构的发展史及其在计算机科学中的地位 5
1.3 基本概念和术语 6
1.4 抽象数据类型和数据结构 7
1.5 学习数据结构的意义 9
1.6.2 变量和对象 11
1.6.1 面向对象的程序设计 11
1.6 Java语言概述 11
1.6.3 流程控制 13
1.6.4 类和修饰符 14
1.7 算法 14
1.7.1 算法及其性质 14
1.7.2 算法描述的分析 15
思考和练习 19
第2章 线性表 22
2.1 线性表类型的定义 22
2.2 线性表的顺序表示和实现 24
2.3.1 单向链表 28
2.3 线性表的链式存储结构 28
2.3.2 单链表的基本运算 31
2.3.3 循环链表 36
2.3.4 双链表 37
2.4 链表应用举例 41
2.5 顺序表和链表的比较 48
思考和练习 48
3.1.1 栈定义及基本概念 52
第3章 栈和队列 52
3.1 栈 52
3.1.2 顺序栈 54
3.1.3 链式栈 56
3.1.4 顺序栈和链式栈的比较 57
3.1.5 栈的应用举例 58
3.2 队列 66
3.2.1 队列定义及基本概念 66
3.2.2 顺序队列 67
3.2.3 链式队列 70
3.2.4 队列的应用 71
思考和练习 76
第4章 数组和广义表 80
4.1 多维数组 80
4.1.1 数组定义 80
4.1.2 数组的存储 81
4.1.3 显示二维数组的内容 82
4.2.1 矩阵的压缩存储 83
4.2 矩阵的存储 83
4.2.2 稀疏矩阵转换为三元组存储 86
4.3 广义表 90
4.3.1 广义表的定义 90
4.3.2 广义表的存储 91
思考和练习 92
第5章 树 95
5.1 树的概念 95
5.1.1 树的定义 95
5.1.2 基本术语 97
5.2 二叉树的定义 98
5.3.1 二叉树性质 99
5.3 二叉树的性质 99
5.3.2 二叉树的抽象数据类型 102
5.4 二叉树的存储结构 103
5.4.1 二叉树的顺序存储结构 103
5.4.2 二叉树的链接存储结构 104
5.4.3 二叉树的实现举例 105
5.5 二叉树的遍历 110
5.5.1 二叉树的前序遍历 111
5.5.3 二叉树的后序遍历 112
5.5.2 二叉树的中序遍历 112
5.5.4 二叉树的层次遍历 113
5.6 线索二叉树 114
5.6.1 二叉树的线索化 114
5.6.2 线索二叉树上的运算 116
5.7 树和二叉树的转换及树的存储结构 118
5.7.1 树转换为二叉树 119
5.7.2 二叉树还原为树 120
5.7.4 树的遍历 121
5.7.3 森林转换为二叉树 121
5.7.5 森林的遍历 122
5.7.6 树的存储结构 123
5.8 哈夫曼树及其应用 124
5.8.1 哈夫曼树的基本概念 125
5.8.2 哈夫曼树在编码问题中的应用 126
思考和练习 128
6.1 图的基本概念 131
6.1.1 图的定义 131
第6章 图 131
6.1.2 常用术语 132
6.2 图的存储结构 135
6.2.1 邻接矩阵表示法 135
6.2.2 邻接表表示法 136
6.2.3 关联矩阵 138
6.3 图的遍历 138
6.3.1 深度优先搜索遍历 138
6.3.2 广度优先搜索遍历 141
6.4 最小生成树 142
6.4.1 生成树 143
6.4.2 最小生成树的生成 144
6.5 最短路径和拓扑排序 147
6.5.1 最短路径 148
6.5.2 拓扑排序 151
思考和练习 153
7.1 概述 156
7.1.1 排序的基本概念 156
第7章 排序 156
7.1.2 排序的稳定性 157
7.1.3 排序的分类 157
7.1.4 排序算法分析 158
7.2 插入排序 158
7.2.1 直接插入排序 158
7.2.2 希尔排序 161
7.3 交换排序 164
7.3.1 冒泡排序 164
7.3.2 快速排序 168
7.4.1 直接选择排序 172
7.4 选择排序 172
7.4.2 堆排序 175
7.5 归并排序 178
7.6 外部排序 181
7.6.1 辅助存储器的存取 181
7.6.2 外部排序的方法 183
7.7 各种内排序方法的比较和选择 185
思考和练习 186
8.1 基本概念 187
第8章 查找 187
8.2 线性表查找 188
8.2.1 顺序查找 188
8.2.2 二分查找 190
8.2.3 分块查找 194
8.3 二叉排序树 194
8.4 B树 199
8.5 散列技术 205
思考和练习 213
9.1 概述 214
第9章 动态存储管理 214
9.2 内存分配与回收策略 215
9.3 可利用空间的分配方法 216
9.4 存储紧缩 221
思考和练习 222
第10章 文件管理 223
10.1 文件的基本概念 223
10.1.1 文件定义 223
10.1.2 文件逻辑结构及操作 224
10.2.1 顺序文件 225
10.2 文件的分类 225
10.2.2 索引文件 226
10.2.3 直接存取文件(散列文件) 229
10.2.4 多关键字文件 229
10.3 文件的存储 231
10.3.1 磁盘 231
10.3.2 磁带 232
思考和练习 233
参考文献 234