数据结构课程设计要求
做与不做的最大区别是:后者拥有对前者的评论权。
数据结构课程设计要求
一、课程设计的步骤
数据结构课程设计就是综合运用本课程所学到的知识来解决实
际问题。
计算机解决一个具体问题一般需要经过下列几个步骤:首先要从该具体问题抽象出一个适当的数学模型;
然后设计或选择一个解此数学模型的算法;
最后编出程序进行调试、测试,直至得到最终的解答。
课程设计也是按照这个步骤进行,下面介绍各阶段的内容。
1.建立模型
建立模型通常包括所描述问题中的数据对象及其关系的描述、问题求解的要求及方法等方面。
将一个具体的问题转换为我们所熟悉的模型,就可以很容易进行求解。
《数据结构》课程中所介绍的各种结
构也是数学模型。
数学模型的建立是求解实际问题的基础。
正确选择数学模型是解决问题的关键,这就要求我们具有扎实的数学基础,同时熟练地掌握数据结构所介绍的线性表、队列与栈、广义表、树和图等各种结构(模型)的存储方法和操作算法。
2.选择合适的存储结构
在构造出求解算法之后,就需要考虑如何在计算机上实现。
从算法到程序还是有一定距离的。
为此,需要做两方面的工作,其一是选择合适的存储结构,其二是用指定的计算机语言来描述算法。
下面先讨论第一个方面,即选择存储结构的问题。
选择合适的存储结构首先是为了将问题所涉及到的数据(包括数据中的基本对象及对象之间的关系)存储到计算机中。
此外,还需要考虑所选择的结构是否便于问题的求解,时间和空间复杂度是否符合要求。
在实际应用时,需根据问题的要求进行合理的选择及综合。
不同的存储形式对问题的求解实现有较大的影响,所占用的存储空间也可能有较大的差异。
3.构造求解算法
在建立好模型之后,一个具体的问题就变成了一个用模型所描述的抽象的问题。
借助于这一模型以及已有的知识(例如数据结构中的基本知识),我们可以相对容易地描述出原问题的求解方法即算法。
从某种意义上说,该算法不仅能实现原问题的求解,而且还能实现许多类似的具体问题的求解,尽管这些具体问题的背景及其描述形式可能存在较大的差异。
算法设计的核心是给出问题求解的基本算法。
所给出的算法并非一定要用某种计算机语言来描述,但应能较方便地转换为某种计算机语言程序。
4.编写程序
编程是用指定的计算机语言来描述算法和数据结构,并将其转换为完整的上机程序。
编写出的代码一定要注重程序设计风格,提高程序的可读性。
5.测试
对设计者来说,很难保证所编写的程序没有错误,因此需要对原代码进行测试,以发现其中的错误和缺陷。
按照软件工程的观点,测试是为了发现错误,而不是证明其正确,也就是说,即使没有发现错误,也不能证明是正确的。
6.总结
在一个课题设计完成之后,需要写出设计报告,以对设计进行总结和讨论,包括课题的要求、模型建立和算法设计,系统组成及说明,使用说明,程序清单,总结和体会,本设计的优、缺点,时、空间性能分析,与其它可能存在的求解方法之间的比较等。
通过总结,可以对问题及其求解有更全面、深入的认识,从而达到由典型到全面、由具体到一般的飞跃。
二、课程设计基本要求
要求学生在数据结构课程设计选题列表中选择3个设计课题,在规定的时间内设计完成并按一定格式以书面形式上交报告。
列表中每个课题都有相应的要求或说明,要仔细阅读各题的设计要求,了解设计的任务。
设计结束后要写出课程设计报告,以作为整个课程设计书面存
档材料。
设计报告一般要以固定规格的纸张(如A4 )打印并装订,字迹及图表要清楚、工整、规范。
内容主要包括下面几个方面:
(1) 问题描述
(2) 设计思路(数学模型的选择)
(3) 数据结构定义
(4) 系统功能模块介绍
(5) 程序清单
(6) 运行与调试分析等
三、课程设计选题
2.矩阵的运算
采用链表表示稀疏矩阵,并实现矩阵的加法,乘法,求逆运算, 要求:要检查有关运算的条件,并对错误的条件产生报警。
假设一个宾馆有n个标准的客房,每个标准客房有m个标准间,利用链表、栈或者队列等数据结构设计出具有订房和退房等功能的管理系统。
7.建立二叉树和线索二叉树
分别用以下方法建立二叉树并用图型显示出来:
用先序遍历的输入序列
用层次遍历的输入序列
用先序和中序遍历的结果
最后对所建立的二叉树进行中序线索化,并对此线索树进行中序
遍历(不使用栈)。
20.银行业务模拟:
客户业务分为两种。
第一种是申请从银行得到一笔资金,即取款或借款。
第二种是向银行投入一笔资金,即存款或还款。
银行有两个服务窗口,相应的有两个队列。
客户到达银行后先排第一个队。
处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立即排入第二队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。
每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。
注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。
任何时刻都只开一个窗口。
假设检查不需要时间。
营业时间结束时所有客户立即离开银行。
写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。
1
做与不做的最大区别是:后者拥有对前者的评论权。