第1章 绪论 1
1.1 数据结构的基本概念 1
1.1.1 引言 1
1.1.2 数据结构有关概念及术语 2
1.2 算法和算法描述 4
1.2.1 什么是算法 4
1.2.2 算法描述工具—类C语言 4
1.3 算法评价 5
1.3.1 时间 6
1.3.2 空间 7
习题 7
第2章 线性表和数组 8
2.1 线性表的逻辑结构 8
2.1.1 线性表的定义 8
2.1.2 线性表的基本操作 8
2.2 线性表的顺序存储结构 9
2.2.1 顺序存储结构 9
2.2.2 基本操作的实现 9
2.2.3 动态分配的顺序存储结构介绍 11
2.3 线性表的链式存储结构 12
2.3.1 单链表 12
2.3.2 单链表的基本操作 13
2.4 循环链表和双向链表 17
2.4.1 循环链表 17
2.4.2 双向链表 17
2.5 线性表的应用—多项式相加问题 19
2.6 数组 22
2.6.1 数组的基本概念 22
2.6.2 数组的顺序存储结构 23
2.6.3 特殊矩阵的压缩存储 23
2.6.4 稀疏矩阵的三元组存储 24
习题 29
上机实习题 30
第3章 栈和队列 31
3.1 栈 31
3.1.1 栈的定义及其运算 31
3.1.2 栈的顺序存储结构 31
3.1.3 栈的链式存储结构 32
3.1.4 栈的应用举例 34
3.2 队列 39
3.2.1 队列的定义及运算 39
3.2.2 队列的顺序存储结构 40
3.2.3 队列的链式存储结构 41
3.3 栈和队列的应用实例—停车场管理 43
习题 47
上机实习题 48
第4章 树 49
4.1 树的定义和基本术语 49
4.1.1 树的定义 49
4.1.2 树的基本术语 50
4.2 二叉树 51
4.2.1 二叉树的定义 51
4.2.2 二叉树的重要性质 51
4.2.3 二叉树的存储结构 52
4.2.4 建立二叉树的二叉链表 53
4.3 遍历二叉树 54
4.3.1 先根遍历 55
4.3.2 中根遍历 57
4.3.3 后根遍历 58
4.4 线索二叉树 58
4.4.1 线索二叉树的基本概念 59
4.4.2 中根线索二叉树 59
4.5 二叉树、树和森林 61
4.5.1 树的存储结构 61
4.5.2 树与二叉树之间的转换 62
4.5.3 森林与二叉树的转换 63
4.5.4 树和森林的遍历 64
4.6 哈夫曼树及其应用 65
4.7 二叉树遍历算法的简单应用实例 69
习题 71
上机实习题 72
第5章 图 73
5.1 图的基本概念 73
5.1.1 图的定义 73
5.1.2 图的基本术语 73
5.2 图的存储结构 75
5.2.1 邻接矩阵表示法 75
5.2.2 邻接表 76
5.3 图的遍历 78
5.3.1 连通图的深度优先搜索遍历 78
5.3.2 连通图的广度优先搜索遍历 79
5.3.3 求图的连通分量 80
5.4 图的最小生成树 81
5.4.1 生成树的概念 81
5.4.2 网络的最小生成树 82
5.5 最短路径 86
5.5.1 从某源点到其余顶点之间的最短路径 86
5.5.2 求有向网中每一对顶点间的最短路径 88
5.6 有向无环图及其应用 90
5.6.1 拓扑排序 90
*5.6.2 关键路径 93
习题 99
上机实习题 100
第6章 排序 101
6.1 排序基本概念 101
6.2 插入排序 102
6.2.1 直接插入排序 102
6.2.2 折半插入排序 103
6.2.3 希尔排序 104
6.3 交换排序 105
6.3.1 冒泡排序 105
6.3.2 快速排序 106
6.4 选择排序 108
6.4.1 简单选择排序 108
6.4.2 堆排序 109
*6.5 归并排序 112
*6.6 基数排序 114
6.7 内部排序总结 117
6.8 多路归并用于外排序的简介 118
6.9 排序应用实例 120
习题 121
上机实习题 122
第7章 查找 123
7.1 查找的基本概念 123
7.2 静态查找表 124
7.2.1 顺序表的概念 124
7.2.2 顺序查找 124
7.2.3 折半查找 125
7.2.4 索引顺序查找 128
7.3 动态查找表 128
7.3.1 二叉排序查找树 129
7.3.2 平衡二叉树与动态平衡技术 132
7.3.3 B-树用于外部查找 135
7.4 哈希表及其查找 139
7.4.1 哈希表与哈希函数 139
7.4.2 构造哈希函数的常用方法 140
7.4.3 解决冲突的主要方法 142
7.4.4 哈希查找效率的分析 146
7.5 查找应用实例 147
习题 148
上机实习题 149
第8章 课程设计实习指导 150
8.1 算法规范与实习步骤 150
8.1.1 算法书写规范 150
8.1.2 实习步骤规范 152
8.2 实习报告范例 153
8.3 加密算法实例 156
习题 158
第9章 Java语言描述的数据结构 160
9.1 面向对象程序设计方法的引入 160
9.1.1 面向对象的概念和趋势 160
9.1.2 面向对象的程序设计语言Java 160
9.2 面向对象程序设计语言的特点 161
9.2.1 封装、继承和多态性 161
9.2.2 Java中的接口、内部类和包 163
9.3 Java实现链表 163
9.3.1 建立链表 163
9.3.2 链表的基本操作 164
9.4 Java实现堆栈 166
9.4.1 堆栈的定义和操作 166
9.4.2 使用Java类库中的Stack类 168
9.5 Java实现二叉树 170
9.5.1 定义和实现二叉树 170
9.5.2 遍历二叉树 171
9.5.3 建立链式存储结构的完全二叉树 171
习题 173
参考文献 174