
本书是一本配合“数据结构”课程学习的实验教材,是作者在总结多年讲授数据结构课程及指导学生上机实践经验的基础上编写而成的。本书算法全部使用C语言描述,可以与采用C语言进行算法描述的“数据结构”教材配套使用。书中示例应用程序的演示过程,全部可以通过书中的微视频进行观看。全书共10章,基本按照“数据结构”教材内容的先后给出了相关的课程设计用例及题选,它们是对“数据结构”课程内容的进一步应用和深化。全书主要章节由本章知识要点、应用设计实例以及课程设计题选三部分组成,所有应用实例的算法均在Microsoft Visual C++ 6.0环境下测试通过。作者力求通过各章典型应用的研究帮助学生深入学习、掌握并灵活应用数据结构的知识。本书应用程序源代码可以在华信教育资源网(www.hxedu.com.cn)免费注册下载。本书适合作为高等学校计算机及相关专业“数据结构课程设计”的教材,也可作为学生自学数据结构设计的辅助教材或软件开发者的参考书。
前 言 数据结构是计算机程序设计的重要理论技术基础,“数据结构”课程对计算机学科具有承前启后的地位和作用,也是计算机科学与技术人才素质培养框架中的中坚课程。由于该课程一般在大学一年级或二年级开设,要学生很好地理解和掌握数据结构的理论、相关算法及其应用往往比较困难。鉴于此,我们编写了此书,旨在帮助读者进一步巩固和提升对数据结构知识的掌握和应用,为后续专业课程的学习打下牢固的基础。 本书内容安排与“数据结构”课程主教材的各个章节相对应,精心挑选出十多个实际应用问题,并通过应用程序的设计、开发与实现过程,引导学生举一反三、触类旁通,一步步地掌握应用知识解决复杂问题的能力。本书是在作者多年指导学生完成“数据结构实验”课程的经验基础上编写而成的,力求思路清晰、概念准确、算法精湛、格式规范、典型实用。所有算法采用C语言描述并实现,全部算法均在Microsoft Visual C++ 6.0环境下测试通过。 全书共10章,第1章概述课程设计的目的和要求等;第2章至第7章分别讨论了线性表,栈、队列,串结构,多维数组、矩阵、广义表,树,图结构等应用;第8章和第9章分别讨论了动态存储管理、查找、排序及文件操作的应用;第10章对应用程序主界面的常用设计方法进行了介绍。 书中第2章至第9章是本书的重点。其中各章的内容由以下三部分组成。 第1部分是本章知识要点。包括数据结构的定义、常用存储方法及经典算法提示等。 第2部分是应用设计实例。从设计要求、概要设计、模块设计、详细设计到测试分析等,按照应用设计开发的全过程进行编写,并对源程序进行了详细注释。希望能够起到抛砖引玉的作用,以引来读者更多、更优良的设计范例。 第3部分是课程设计题选。题选由问题描述、基本要求、实现提示等内容组成,希望读者在学习之余能自己练习提高。 本书在第2版教材的基础上,增加了示例应用程序的演示过程视频,读者通过扫描对应的二维码即可观看。另外,对“课程设计题选”部分进行进一步优化和补充。 本书由阮宏一、鲁静主编,并负责全书的总体策划与统稿;其中第1章~第3章、第7章、第9章由阮宏一、张绪辉编写;第4章~第6章、第8章、第10章由鲁静、宋婉娟、张琪编写;应用程序演示过程的视频由阮宏一、鲁静完成;并由阮宏一完成文稿最后的修订及定稿工作。 本书适合作为高等学校计算机科学与技术专业及相关专业“数据结构课程设计”的教材,也可以作为学生自学“数据结构”课程的辅助教材或软件开发者的参考书。 本书应用程序源代码可在华信教育资源网(www.hxedu.com.cn)免费注册下载。 由于时间仓促及作者水平有限,书中难免存在欠妥和疏漏之处,敬请广大读者批评指正。编者E-mail:hyyh001@126.com。 编 者
第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
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0441680