本书共10章,基本按照“数据结构”教材内容的先后给出了相关的课程设计用例及题选,它们是对“数据结构”课程内容的进一步应用和深化。全书主要章节由本章知识要点、应用设计实例以及课程设计题选三部分组成,所有应用实例的算法均在Microsoft VisualC++6.0环境下测试通过。作者力求通过各章典型应用的研究帮助学生深入学习、掌握并灵活应用数据结构的知识。
阮宏一,教授,1982年至今,先后在湖北教育学院数学系、湖北教育学院计科系、湖北第二师范学院计算机学院任教。湖北高等学校计算机学会会员,《数据结构》校级精品课程负责人。曾出版过《数据库系统概论》、《数据结构C/C++描述》、《数据结构实践指导教程(C语言版)》、《C程序设计实训教程》、《Visual FoxPro 程序设计实训教程》、《大学计算机基础》、《大学计算机基础实训教程》、《数据结构课程设计(C/C++描述)》等多部教材。
第1章 课程设计概述 1
1.1 课程设计的地位与作用 1
1.2 课程设计的目标与要求 1
1.3 课程设计步骤 2
1.4 实验报告规范 3
第2章 线性表及其应用 5
2.1 本章知识要点 5
2.1.1 线性表的顺序存储 5
2.1.2 线性表的链式存储 5
2.2 “学生通讯录管理系统”的
设计与实现 6
2.2.1 设计要求 6
2.2.2 概要设计 6
2.2.3 模块设计 7
2.2.4 详细设计 7
2.2.5 测试分析 9
2.2.6 源程序清单 10
2.2.7 用户手册 15
2.3 “航空客运订票系统”的
设计与实现 16
2.3.1 设计要求 16
2.3.2 概要设计 16
2.3.3 模块设计 17
2.3.4 详细设计 18
2.3.5 测试分析 25
2.3.6 源程序清单 26
2.3.7 用户手册 32
2.4 课程设计题选 32
2.4.1 运动会分数统计系统 32
2.4.2 约瑟夫环问题 33
2.4.3 通迅录的制作 33
2.4.4 集合的并、交和差运算 34
第3章 栈、队列及其应用 35
3.1 本章知识要点 35
3.1.1 栈的存储结构 35
3.1.2 队列的存储结构 36
3.2 “表达式求值问题”的设计与实现 37
3.2.1 设计要求 37
3.2.2 概要设计 37
3.2.3 模块设计 38
3.2.4 详细设计 39
3.2.5 测试分析 41
3.2.6 源程序清单 41
3.2.7 用户手册 43
3.3 “银行排队系统”的设计与实现 43
3.3.1 设计要求 43
3.3.2 概要设计 43
3.3.3 模块设计 44
3.3.4 详细设计 45
3.3.5 测试分析 47
3.3.6 源程序清单 49
3.3.7 用户手册 57
3.4 课程设计题选 57
3.4.1 停车场管理系统 57
3.4.2 数制转换问题 58
3.4.3 键盘输入循环缓冲区问题 58
第4章 串结构及其应用 60
4.1 本章知识要点 60
4.1.1 串的定义及基本操作 60
4.1.2 串的存储结构 61
4.1.3 串的模式匹配算法 61
4.2 “串基本操作演示系统”的
设计与实现 63
4.2.1 设计要求 63
4.2.2 概要设计 64
4.2.3 模块设计 64
4.2.4 详细设计 65
4.2.5 测试分析 68
4.2.6 源程序清单 69
4.2.7 用户手册 72
4.3 “文学研究助手系统”的设计与实现 72
4.3.1 设计要求 72
4.3.2 概要设计 72
4.3.3 模块设计 73
4.3.4 详细设计 74
4.3.5 测试分析 76
4.3.6 源程序清单 76
4.3.7 用户手册 77
4.3.8 “文学研究助手系统”
实现方法二 77
4.4 课程设计题选 81
4.4.1 文本格式化问题 81
4.4.2 简单行编辑程序 82
第5章 多维数组、矩阵、广义表及其应用 84
5.1 本章知识要点 84
5.1.1 多维数组 84
5.1.2 稀疏矩阵 85
5.1.3 广义表 86
5.2 “稀疏矩阵运算器”的设计与实现 89
5.2.1 设计要求 89
5.2.2 概要设计 89
5.2.3 模块设计 90
5.2.4 详细设计 90
5.2.5 测试分析 93
5.2.6 源程序清单 94
5.2.7 用户手册 98
5.3 “广义表基本操作演示系统”
的设计与实现 98
5.3.1 设计要求 98
5.3.2 模块设计 98
5.3.3 详细设计 99
5.3.4 测试分析 104
5.3.5 源程序清单 104
5.3.6 用户手册 110
5.4 课程设计题选 110
5.4.1 模拟实现多维数组类型 110
5.4.2 稀疏矩阵的转置 111
5.4.3 识别广义表的“头”或
“尾”的演示 111
第6章 树及其应用 113
6.1 本章知识要点 113
6.1.1 树与森林 113
6.1.2 二叉树 115
6.1.3 哈夫曼树及其应用 118
6.2 “二叉树基本操作程序”的
设计与实现 119
6.2.1 设计要求 119
6.2.2 概要设计 119
6.2.3 模块设计 120
6.2.4 详细设计 121
6.2.5 测试分析 123
6.2.6 源程序清单 124
6.2.7 用户手册 126
6.3 “哈夫曼树”的设计与实现 127
6.3.1 设计要求 127
6.3.2 概要设计 127
6.3.3 模块设计 127
6.3.4 详细设计 128
6.3.5 测试分析 130
6.3.6 源程序清单 131
6.3.7 用户手册 133
6.4 课程设计题选 133
6.4.1 求二叉树上结点的路径 133
6.4.2 层次遍历二叉树 134
6.4.3 表达式类型的实现 134
6.4.4 打印树形结构 135
第7章 图结构及其应用 136
7.1 本章知识要点 136
7.1.1 图的存储结构 136
7.1.2 图应用的相关算法 137
7.2 “校园导游程序”的设计与实现 139
7.2.1 设计要求 139
7.2.2 概要设计 139
7.2.3 模块设计 140
7.2.4 详细设计 142
7.2.5 测试分析 148
7.2.6 源程序清单 150
7.2.7 用户手册 158
7.3 课程设计题选 158
7.3.1 图基本操作的实现 158
7.3.2 教学计划编排问题 158
7.3.3 最小生成树问题 159
7.3.4 求图的中心顶点 159
第8章 动态存储管理、查找、排序及其应用 161
8.1 本章知识要点 161
8.1.1 动态存储管理 161
8.1.2 查找 163
8.1.3 排序 165
8.2 “模拟动态存储管理演示系统”的
设计与实现 167
8.2.1 设计要求 167
8.2.2 概要设计 167
8.2.3 模块设计 168
8.2.4 详细设计 169
8.2.5 测试分析 172
8.2.6 源程序清单 173
8.2.7 用户手册 181
8.3 “航班信息查询与检索系统”的
设计与实现 181
8.3.1 设计要求 181
8.3.2 概要设计 182
8.3.3 模块设计 182
8.3.4 详细设计 183
8.3.5 测试分析 187
8.3.6 源程序清单 188
8.3.7 用户手册 192
8.4 课程设计题选 193
8.4.1 伙伴存储管理系统演示 193
8.4.2 图书管理系统 194
8.4.3 多关键字排序 195
第9章 文件操作及其应用 196
9.1 本章知识要点 196
9.1.1 文件的基本概念 196
9.1.2 C语言文件类型指针 197
9.1.3 C语言文件的打开与关闭 198
9.1.4 数据块的读入和输出 199
9.2 “二叉排序树与文件操作”的
设计与实现 202
9.2.1 设计要求 202
9.2.2 概要设计 202
9.2.3 模块设计 204
9.2.4 详细设计 205
9.2.5 测试分析 207
9.2.6 源程序清单 208
9.2.7 用户手册 215
9.3 课程设计题选 216
9.3.1 外存文件的排序操作 216
9.3.2 索引文件的插入、删除和
查找 216
第10章 应用程序主界面设计 218
10.1 本章知识要点 218
10.1.1 窗体型界面 218
10.1.2 字符型界面 218
10.2 字符型界面的设计与实现 218
10.2.1 界面背景颜色设置 218
10.2.2 界面背景大小设置 219
10.2.3 字符菜单设计实例一 219
10.2.4 字符菜单设计实例二 222
10.3 字符型界面设计总结 223
参考文献 224