第1章 概论 1
1.1 数据结构的概念 1
1.1.1 什么是数据结构 1
1.1.2 基本术语 3
1.2 数据类型 6
1.3 算法 7
1.3.1 算法的描述 7
1.3.2 算法性能分析 9
1.4 本章小结 12
1.5 上机实训 12
1.5.1 实训目的 12
1.5.2 实训例题 12
1.6 习题与上机操作 17
第2章 线性表 19
2.1 线性表的逻辑结构 19
2.1.1 线性表的类型定义 19
2.1.2 线性表的基本操作 20
2.2 线性表的顺序存储 21
2.2.1 顺序表 21
2.2.2 顺序表的基本运算 23
2.2.3 顺序表的应用 28
2.3 线性表的链式存储 30
2.3.1 线性链表 30
2.3.2 动态内存分配 32
2.3.3 线性链表的基本运算 33
2.3.4 循环链表及运算 37
2.3.5 双向链表及运算 39
2.4 顺序表与链表的比较及应用举例 42
2.4.1 顺序表与链表的比较 42
2.4.2 线性表应用举例 43
2.5 本章小结 48
2.6 上机实训 49
2.6.1 实训目的 49
2.6.2 实训例题 49
2.7 习题与上机操作 61
第3章 栈 64
3.1 栈的定义和基本运算 64
3.1.1 栈的定义 64
3.1.2 栈的基本运算 65
3.1.3 栈的顺序存储结构 65
3.1.4 栈的链式存储结构 68
3.2 栈的应用举例 71
3.2.1 数制的转换 71
3.2.2 表达式求值 72
3.2.3 子程序调用问题 74
3.2.4 迷宫问题 77
3.3 本章小结 81
3.4 上机实训 81
3.4.1 实训目的 81
3.4.2 实训例题 81
3.5 习题与上机操作 92
第4章 队列 94
4.1 队列的定义和基本运算 94
4.1.1 队列的定义 94
4.1.2 队列的基本运算 95
4.1.3 队列的顺序存储结构 95
4.1.4 队列的链式存储结构 100
4.2 队列的应用 103
4.2.1 利用队列打印杨辉三角形 103
4.2.2 求迷宫的最短路径 105
4.3 本章小结 107
4.4 上机实训 107
4.4.1 实训目的 107
4.4.2 实训例题 107
4.5 习题与上机操作 116
第5章 串 118
5.1 串的基本概念和存储结构 118
5.1.1 串的基本概念 118
5.1.2 串的静态存储结构 119
5.1.3 串的动态存储结构 120
5.2 串的运算 122
5.2.1 串的基本运算 122
5.2.2 实现串的基本运算的算法 123
5.3 正文模式匹配 125
5.3.1 模式匹配 125
5.3.2 简单模式匹配算法 125
5.4 串操作应用举例 127
5.5 本章小结 128
5.6 上机实训 128
5.6.1 实训目的 128
5.6.2 实训例题 129
5.7 习题与上机操作 133
第6章 数组 135
6.1 数组的基本概念 135
6.1.1 数组的定义及逻辑结构 135
6.1.2 数组的顺序存储结构 136
6.2 矩阵的压缩存储 138
6.2.1 对称矩阵的压缩存储 138
6.2.2 三角矩阵的压缩存储 139
6.3 稀疏矩阵 139
6.3.1 稀疏矩阵的概念 139
6.3.2 稀疏矩阵的转置 141
6.4 本章小结 142
6.5 上机实训 142
6.5.1 实训目的 142
6.5.2 实训例题 142
6.6 习题与上机操作 148
第7章 树和二叉树 151
7.1 树的定义和基本操作 151
7.1.1 树的定义 151
7.1.2 树的常用术语 152
7.1.3 树的表示方法 153
7.2 二叉树 154
7.2.1 二叉树的定义 154
7.2.2 二叉树的性质 154
7.2.3 二叉树的存储结构 156
7.2.4 二叉树的遍历 161
7.2.5 二叉树遍历的应用 165
7.3 线索二叉树 169
7.3.1 线索二叉树的定义及结构 169
7.3.2 线索二叉树的基本运算 170
7.4 树、森林和二叉树的关系 174
7.4.1 树的存储结构 174
7.4.2 树、森林与二叉树的转换 177
7.4.3 树和森林的遍历 179
7.4.4 树的应用 180
7.5 哈夫曼树及其应用 181
7.5.1 哈夫曼树的定义 181
7.5.2 哈夫曼树的构造 183
7.5.3 哈夫曼编码 186
7.6 本章小结 189
7.7 上机实训 189
7.7.1 实训目的 189
7.7.2 实训例题 189
7.8 习题与上机操作 196
第8章 图 200
8.1 图的基本概念 200
8.1.1 基本概念 200
8.1.2 基本术语 201
8.1.3 基本操作 203
8.2 图的存储结构 204
8.2.1 邻接矩阵表示法 204
8.2.2 邻接表表示法 206
8.3 图的遍历 210
8.3.1 图的深度优先搜索遍历 210
8.3.2 图的广度优先搜索遍历 212
8.4 连通网的最小生成树 214
8.4.1 求无向图的连通分量 214
8.4.2 生成树的概念 214
8.4.3 最小生成树 215
8.5 最短路径 219
8.5.1 求某一顶点到其他各顶点的最短路径——迪杰斯特算法 219
8.5.2 求任意一对顶点间的最短路径 221
8.6 拓扑排序 223
8.6.1 AOV网 223
8.6.2 拓扑排序的过程 224
8.7 图的应用举例 225
8.7.1 图的建立及遍历实用程序 225
8.7.2 图的拓扑排序实用程序 228
8.8 本章小结 230
8.9 上机实训 230
8.9.1 实训目的 230
8.9.2 实训例题 231
8.10 习题与上机操作 239
第9章 查找表 244
9.1 查找表的基本概念 244
9.1.1 基本概念 244
9.1.2 术语 244
9.2 静态查找表 246
9.2.1 顺序表查找 247
9.2.2 折半查找 248
9.2.3 索引顺序查找 250
9.3 动态查找表 251
9.3.1 二叉查找树的定义 251
9.3.2 二叉查找树的查找过程 252
9.3.3 二叉查找树的插入操作 253
9.3.4 二叉查找树的删除操作 254
9.3.5 二叉查找树的性能分析 255
9.4 哈希表查找 256
9.4.1 哈希表的基本概念 256
9.4.2 构造哈希表的方法 257
9.4.3 处理冲突的方法 260
9.4.4 哈希表的查找性能 264
9.5 本章小结 266
9.6 上机实训 266
9.6.1 实训目的 266
9.6.2 实训例题 267
9.7 习题与上机操作 274
第10章 排序 277
10.1 基本概念 277
10.1.1 概述 277
10.1.2 基本术语 278
10.2 插入排序 279
10.2.1 直接插入排序 279
10.2.2 希尔排序 281
10.3 交换排序 283
10.3.1 冒泡排序 283
10.3.2 快速排序 285
10.4 选择排序 288
10.4.1 直接选择排序 288
10.4.2 堆排序 289
10.5 归并排序 293
10.5.1 归并排序的概念 293
10.5.2 二路归并排序 294
10.5.3 归并排序的算法 294
10.5.4 算法分析 295
10.6 基数排序 295
10.6.1 多关键词排序 295
10.6.2 基数排序 296
10.7 外部排序 297
10.7.1 问题的提出 297
10.7.2 外部排序的基本过程 299
10.8 各种内部排序方法的比较 301
10.9 排序的应用举例 302
10.9.1 希尔排序的实用程序 302
10.9.2 快速排序的实用程序 304
10.10 本章小结 305
10.11 上机实训 306
10.11.1 实训目的 306
10.11.2 实训例题 306
10.12 习题与上机操作 311
参考文献 315