前言
数据结构是计算机程序设计的重要理论技术基础,《数据结构》课程对计算机学科具有承前启后的地位和作用。由于课堂教学和实践的深度和广度有限,要学生很好地理解和掌握数据结构的理论、相关算法及其应用往往比较困难。针对这种情况,我们编写了这本《数据结构课程设计(C/C++描述)》实践教材,其内容安排与《数据结构》课程主教材的相关章节知识点对应,符合数据结构课程教学大纲的要求。
《数据结构》作为一门专业基础课,其教学要求是:学会分析研究计算机所处理的数据结构的特性,以便为应用中涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间和空间分析技术。因此,在本书的编排及选题设计中,主要从上述几方面入手,精心挑选出十多个实际应用问题,并通过解决这些问题的应用程序的设计、开发与实现过程,带领读者一步一步地掌握数据结构课程的精华。要求重点掌握线性表、二叉树和树、图、数组等结构在实践中的应用以及相关算法的设计。其中,线性表是基础,也是数据结构课程的核心。树和图的应用是设计中的难点和重点。
本书的编写力求思路清晰、概念准确、算法精湛、格式规范、典型实用。考虑到本课程设计一般在大学二年级开设,所以本书主要采用C语言或引进部分C++的基本概念和语句来实现各种算法。本课程设计的实验环境选择在Microsoft Visual C++6.0之下,所有应用程序源代码都在Microsoft Visual C++6.0下运行通过。
全书共分10章。第1章概述课程设计的目的和要求等;第2章至第7章对应数据结构课程的相关内容,分别讨论了相应数据结构的应用,如线性表、栈、队列、串、数组及广义表、树、图等;第8章和第9章分别讨论了动态存储管理、查找、排序及文件操作的应用; 第10章介绍应用程序主界面的常用设计方法。
第2章至第9章是本书的重点。其中,各章的内容由以下三部分组成:
第一部分是本章知识要点,是对本章主要知识点的提示,包括数据结构的定义、常用存储方法及经典算法等。
第二部分是应用设计实例,从设计要求、概要设计、模块设计、详细设计到测试分析、源程序清单等,按照应用设计开发的全过程进行编写,并对源程序进行了详细注释。目的是帮助读者在无形中学会模仿,起到潜移默化的效果。希望书中的应用实例能起到抛砖引玉的作用,以引来读者更多更优良的设计范例。
第三部分是课程设计题选,目的是希望读者在学习了相关章节的内容后能自己练习提高。选题有难有易。每个选题由问题描述、基本要求、测试数据、实现提示和选做内容五部分组成,希望能够帮助读者在实践过程中得到一些启发,各部分具体目标如下:
(1)问题描述。旨在为读者建立问题提出的背景环境,指明问题“是什么”。
(2)基本要求。对问题进一步求精,划出问题的边界,指出具体的参数或前提条件,并规定该题的最低限度和要求等。
(3)测试数据。旨在为检查学生上机作业提供方便,在完成实习题时读者应自行设计完整和严格的测试方案,当数据输入量较大时,提倡以文件形式向程序提供输入数据。
(4)实现提示。对实现中的难点及其算法思路等问题作出简要提示,个别问题给出了参考算法。
(5)选做内容。向那些尚有余力的读者提出了更高的要求,同时也希望开拓读者的思路,在完成基本要求之后,尽可能寻求更优的算法,使得程序结构更合理,更容易修改和扩充。
本书由阮宏一、鲁静主编,并负责全书的总体策划与统稿、定稿工作,宋婉娟、张琪、史毓达、白红武任副主编。各章主要编写人员分工如下:第1章、第7章、第9章由阮宏一、史毓达、白红武编写,第2章、第3章、第10章由宋婉娟、张剑编写,第4章、第5章、第8章由鲁静、吴士泓编写,第6章由张琪编写。
本书适合作为计算机及相关专业《数据结构》课程设计教材,也可作为学生自学数据结构设计的辅助教材,也是软件开发者的参考书。
本书应用程序源代码可在华信教育资源网(www.hxedu.com.cn)免费注册下载。
由于时间仓促及作者水平有限,书中难免存在欠妥和疏漏之处,敬请广大读者批评指正。作者E-mail:hyruan@hue.edu.cn。
编者