第一篇 学习辅导 3
第1章 绪论 3
1.1 本章导学 3
1.2 重点难点释疑 4
1.2.1 信息、数据与结构 4
1.2.2 数据结构、数据类型和抽象数据类型 5
1.2.3 逻辑结构与存储结构 6
1.2.4 如何选择或设计数据结构 6
1.2.5 算法设计的一般原则 7
1.2.6 算法的时间复杂度分析 8
1.3 习题解析 9
1.3.1 课后习题讲解 9
1.3.2 学习自测题及答案 15
第2章 线性表 17
2.1 本章导学 17
2.2 重点难点释疑 18
2.2.1 存储结构与存取结构 18
2.2.2 头指针、尾标志、开始结点与头结点 19
2.2.3 带头结点的单链表与不带头结点的单链表的比较 19
2.2.4 单链表的算法设计技巧 21
2.2.5 有序单链表的算法设计技巧 25
2.2.6 循环链表的算法设计技巧 26
2.3 习题解析 27
2.3.1 课后习题讲解 27
2.3.2 学习自测题及答案 36
第3章 栈和队列 41
3.1 本章导学 41
3.2 重点难点释疑 42
3.2.1 浅析栈的操作特性 42
3.2.2 递归算法转换为非递归算法 43
3.2.3 循环队列中队空和队满的判定方法 44
3.3 习题解析 47
3.3.1 课后习题讲解 47
3.3.2 学习自测题及答案 52
第4章 字符串和多维数组 55
4.1 本章导学 55
4.2 重点难点释疑 56
4.2.1 KMP算法中如何求next数组 56
4.2.2 特殊矩阵压缩存储后存储位置的计算 58
4.3 习题解析 59
4.3.1 课后习题讲解 59
4.3.2 学习自测题及答案 64
第5章 树和二叉树 67
5.1 本章导学 67
5.2 重点难点释疑 69
5.2.1 二叉树和树是两种不同的树结构 69
5.2.2 二叉树的构造方法 69
5.2.3 二叉树遍历的递归实现图解 70
5.2.4 二叉树的算法设计技巧 70
5.2.5 哈夫曼树的构造过程中应注意的问题 73
5.3 习题解析 74
5.3.1 课后习题讲解 74
5.3.2 学习自测题及答案 84
第6章 图 89
6.1 本章导学 89
6.2 重点难点释疑 91
6.2.1 深度优先遍历算法的非递归实现 91
6.2.2 图的遍历算法的应用 92
6.2.3 有向图的强连通分量 93
6.2.4 改进的拓扑排序算法 94
13.3.2 数字旋转方阵 205
第14章 树和二叉树实验 207
14.1 验证实验 207
14.1.1 二叉树的实现 207
14.1.2 树的实现 210
14.2 设计实验 214
14.2.1 求二叉树中叶子结点的个数 214
14.2.2 二叉表示树 215
14.3 综合实验 216
14.3.1 信号放大器 216
14.3.2 哈夫曼算法的应用 218
第15章 图实验 219
15.1 验证实验 219
15.1.1 邻接矩阵的实现 219
15.1.2 邻接表的实现 222
15.2 设计实验 225
15.2.1 TSP问题 225
15.2.2 哈密顿路径 226
15.3 综合实验 228
15.3.1 农夫过河 228
15.3.2 医院选址问题 228
第16章 查找技术实验 231
16.1 验证实验 231
16.1.1 顺序查找的实现 231
16.1.2 折半查找的实现 232
16.1.3 散列查找的实现 234
16.2 设计实验 235
16.2.1 二叉排序树的查找性能 235
16.2.2 闭散列表和开散列表查找性能的比较 236
16.3 综合实验 236
16.3.1 个人电话号码查询系统 236
16.3.2 斐波那契查找 237
第17章 排序技术实验 239
17.1 验证实验 239
10.2 VC++编程工具的使用 162
10.2.1 控制台程序 162
10.2.2 单文件结构 162
10.2.3 多文件结构 163
10.2.4 程序的调试 166
第11章 线性表实验 171
11.1 验证实验 171
11.1.1 顺序表的实现 171
11.1.2 单链表的实现 174
11.2 设计实验 178
11.2.1 约瑟夫环问题 178
11.2.2 用单链表实现集合的操作 180
11.3 综合实验 182
11.3.1 大整数的代数运算 182
11.3.2 一元多项式相加 183
第12章 栈和队列实验 185
12.1 验证实验 185
12.1.1 顺序栈的实现 185
12.1.2 链队列的实现 187
12.2 设计实验 191
12.2.1 汉诺塔问题 191
12.2.2 火车车厢重排问题 192
12.3 综合实验 194
12.3.1 表达式求值 194
12.3.2 迷宫问题 195
第13章 字符串和多维数组实验 197
13.1 验证实验 197
13.1.1 串操作的实现 197
13.1.2 对称矩阵的压缩存储 199
13.2 设计实验 200
13.2.1 统计文本中单词的个数 200
13.2.2 幻方 201
13.3 综合实验 203
13.3.1 近似串匹配 203
6.3 习题解析 94
6.3.1 课后习题讲解 94
6.3.2 学习自测题及答案 106
第7章 查找技术 109
7.1 本章导学 109
7.2 重点难点释疑 111
7.2.1 折半查找判定树及其应用 111
7.2.2 时空权衡 112
7.2.3 平衡二叉树的调整方法 113
7.2.4 散列查找的性能分析 114
7.3 习题解析 115
7.3.1 课后习题讲解 115
7.3.2 学习自测题及答案 124
第8章 排序技术 127
8.1 本章导学 127
8.2 重点难点释疑 129
8.2.1 排序算法的稳定性 129
8.2.2 如何将排序算法移植到单链表上 130
8.2.3 二叉排序树与堆的区别 131
8.2.4 递归算法的时间性能分析 132
8.3 习题解析 134
8.3.1 课后习题讲解 134
8.3.2 学习自测题及答案 144
第9章 索引技术 149
9.1 本章导学 149
9.2 习题解析 150
9.2.1 课后习题讲解 150
9.2.2 学习自测题及答案 154
第二篇 实验指导 159
第10章 实验基础 159
10.1 实验的一般过程 159
10.1.1 本书的实验安排 159
10.1.2 验证实验的一般过程 160
10.1.3 设计实验和综合实验的一般过程 161
17.1.1 插入排序算法的实现 239
17.1.2 交换排序算法的实现 241
17.1.3 选择排序算法的实现 244
17.2 设计实验 246
17.2.1 直接插入排序基于单链表的实现 246
17.2.2 双向起泡排序 248
17.3 综合实验 249
17.3.1 各种排序算法时间性能的比较 249
17.3.2 机器调度问题 249
附录A 实验报告的一般格式 251
附录B 课程设计报告的一般格式 253
参考文献 255