数据结构课程设计指导

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计指导

一、设计目的

熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求

在本课程设计过程中要求学生:

(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;

(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩。

(3)认真编写课程设计报告。课程设计报告的书写格式及要求见附录2。

三、设计步骤

1、问题分析和任务定义;

2、数据类型和系统设计;

3、编码实现和静态检查;

4、上机调试;

5、总结和整理课程设计报告。

四、考核方式和成绩评定

考核分为两个部分:

●程序运行情况:按规定时间到机房运行程序,由老师检查运行情况。学生能对自己

的程序面对教师提问并能熟练地解释清楚。

●实验报告:是否按规定书写实验报告的各项内容。

课程设计成绩

100%=上机检查(50%)+课程设计报告(50%)

五、上交相关内容要求

上交的成果的内容必须由以下四个部分组成,缺一不可

1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);

2.上交程序的说明文件:(保存在.doc中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;

3.课程设计报告:(保存在word 文档中,文件名要求按照"姓名-学号-课程设计报告"起名,如文件名为"张三-101-课程设计报告".doc )按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;

1、需求分析

1.程序的功能;

2.输入输出的要求;

3.测试数据。

2、概要设计

包括程序设计组成框图,程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

3、详细设计

包括模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等),每个模块的算法设计说明(可以是描述算法的流程图)。

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

4、调试分析

测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

5、核心源程序清单和执行结果

源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

附录1 数据结构课程设计的具体内容

本次课程设计完成如下模块(抽签决定自己所做题目的序号)

1、一元多项式乘法

【问题描述】

已知A(x)=a0+a1x+a2x2+……+a n x n和B(x)=b0+b1x+b2x2+……+b m x m,并且在A(x)和B(x)中指数相差很多,求A(x)=A(x)*B(x)。

【基本要求】

(1)设计存储结构表示一元多项式;

(2)设计算法实现一元多项式乘法;

(3)分析算法的时间复杂度和空间复杂度。

2、抽签游戏

【问题描述】

抽签是我们日常生活中经常遇到的一件事,并且其形式有很多种。这里介绍一种抽签游戏,如图3所示,最上面一排是游戏的参加者——称为抽签者,最下面一排是签号(奖品、公差等)。每个人依次顺着竖线往下走,当碰到横线时,即转横向前进,碰到竖线再往下,以此类推,则游戏结束后,抽签者会一一对应到最下面一排的签号。

【基本要求】

(1) 设计存储结构存储抽签者、签号、游戏用横线、竖线等;

(2) 设计算法实现抽签;

(3) 存储游戏的最终结果。

【设计思想】

分析上面的抽签游戏的示例,遇到一条横线,代表这两个竖线的数据就要交换顺序,例如,原来的顺序为{A0, A1, A2, A3, A4},经过第0层横线后,顺序为{A1, A0, A3, A2, A4},再经

过第1层横线后,顺序为{A 1,A 3,A 0,A 2,A 4},以此类推,最后顺序为{A 4, A 1, A 0, A 2, A 3},对应到{p 0, p 1, p 2, p 3, p 4}。在该游戏中,需解决以下问题:

(1) 抽签游戏可以多人参与,只要加上竖线和横线即可。那么,如何表示这些参与者呢? 解决:假设有n 个人参加,可以用一个一维数组A[n]来记录n 个抽签者。 (2) 签号如何存储?

解决:签号的存储也可设计成一个一维数组p[n]来记录n 个签号。 (3) 如何存储游戏的最终结果?

解决:设计一维数组B[n]存储最终的对应结果,同时在执行过程中记载中间结果。 (4) 当碰到某一横线跨在第i 条和第i +1条竖线上时,如何交换数据?

解决:用一维数组B[n]来存放游戏过程中的中间结果和最终结果,通过交换B[i]和B[i+1]的值解决交换数据问题。

(5) 如何表示抽签游戏的竖线和横线布局?

解决:设计一个二维数组M[m][n],M[i][j]表示第i 层上第j 条和第j +1条竖线之间是否有横线,其值为0或1,1代表有横线,0代表没有横线。图3所述示例对应的数组M 如图4

算法设计要点如下:

(1) 按从上到下、由左到右的方式遍历数组M ,若某元素值为1,则进行数据交换。 (2) 在数据交换的过程中,用一维数组B 来存放游戏过程中的顺序和最终的顺序,即: 如果M[i][j]=1,则B[j]←→B[j+1]; (3) 最后B[n]即为所求; 3、信号放大器 【问题描述】

天然气经过管道网络从其生产基地输送到消耗地,在传输过程中,其性能的某一个或几个方面可能会有所衰减(例如气压)。为了保证信号衰减不超过容忍值,应在网络中的合适位置放置放大器以增加信号(例如电压)使其与源端相同。设计算法确定把信号放大器放在何处,能使所用的放大器数目最少并且保证信号衰减不超过给定的容忍值。

1

0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1

相关文档
最新文档