数据结构课程设计任务书

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

数据结构与算法课程设计任务书

一.数据结构与算法课程设计的目的和要求

(一)设计的目的

数据结构与算法课程设计是在学完数据结构与算法课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过数据结构课程设计在下述各方面得到锻炼:

1.能根据实际问题的具体情况,结合数据结构与算法课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3.培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

(二)设计要求

1.学生必须仔细阅读《数据结构与算法》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。

2.学生要发挥自主学习的能力,充分利用时间,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。

3.课程设计按照教学要求需要一周时间完成,属教师安排上机时间学生不得缺席。二.设计内容及步骤

1.分析问题,给出数学模型,设计相应的数据结构。

(1)分析问题的特点,用数学表达式或其它形式描述其数学模型。

(2)选择能够体现问题本身特点的逻辑结构。

(3)在逻辑结构确定的情况下,为算法的设计选择相应的存储结构,顺序存储结构和非顺序存储结构的不同存储方式,其对应的算法也不相同。

2.算法设计

在已经选择好数据结构的前提下,为解决问题设计算法。

(1)确定所需模块

对于稍复杂的程序设计,要充分利用模块化程序设计方法,自顶向下,逐步细化,在整体思路确定的情况下,考虑所需模块数,各模块完成功能以及模块之间的数据联系和调用关系。

(2)各子模块功能描述

给出主要模块的算法描述,用流程图或伪代码表示。

(3)模块之间的调用关系

给出算法各模块之间的关系图示

3.源程序清单

为了提高工作效率,充分利用上机调试程序的时间,要求学生在上机之前给出源程序清单。

4.算法分析

经过上机调试,源程序运行正确,并且实现算法要求的功能,解决课程设计题目中给出的问题后,分析各模块算法的时间复杂度和空间复杂度。进一步体会:程序=数据结构+ 算法

二.上交相关材料要求

上交的成果的内容由以下两部分组成,缺一不可

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

2.课程设计报告:按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:

设计题目

设计内容

概要设计:确定所需模块及模块间调用关系

算法描述:给出各模块流程图及代码

算法分析

心得体会

参考资料

三.课程设计的成绩评定

1.程序设计结果(40%)

2.实验报告(40%)

3.平时表现(20%)

四.课程设计完成时间

第12周周五下午17:40之前。

五.上机时间安排表

课程设计的时间及教师安排

六.数据结构课程设计题目 题目1:任意长的整数加法

问题描述:设计一个算法,实现两个任意长的整数的加法运算。

基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。

题目2:集合运算

功能:使用链表来表示集合,完成集合的交、并、差等操作。 主要包含以下内容:

1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求: 3.进一步要求:

题目3:一元多项式加法、乘法运算的实现

功能: 完成两个一元多项式作加法、乘法,给出明确的等式形式。 即:

m m m x A x A x A A x A +++=22110)( n n n x B x B x B B x B +++=22110)( 求:n n m x B x A +)(、n n m x B x A ⨯)( 分步实施:

1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求:建立一个文件,实现两个一元二次多项式作乘法。

题目4:二叉排序树的实现

用二叉链表为存储结构

1.以回车('\n')为输入结束标志,输入数列L ,生成一棵二叉排序树T ;

2.对二叉排序树T 作中序遍历,输出结果;

3.输入元素x,查找二叉排序树T,若存在含x 的结点,则删除该结点,并作中序遍历(执行操作;否则输出信息“无x ”;

题目5: 内部排序算法的性能分析

利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。

要求:

1.至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。

2.统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

3.如果采用4种或4种以上的方法者,可适当加分。

题目6:哈希表的设计与实现

问题描述:设计哈希表实现电话号码查询系统。

基本要求:

1、设每个记录有下列数据项:电话号码、用户名、地址;

2、从键盘输入各记录,分别以电话号码和用户名为关键字建立哈希表;

3、采用再哈希法解决冲突;

4、查找并显示给定电话号码的记录;

5、查找并显示给定用户名的记录。

6、在哈希函数确定的前提下,尝试各种不同类型处理冲突的方法(至少两种),考察平均查找长度的变化。

题目7:树的应用——家谱查询系统

问题描述:讨论对任意树的存储,并讨论在此存储结构下的基本操作。

1.建立树(家谱)存储结构;

2.树(家谱)的遍历方法;

3.结点(家谱成员)查询;

4.求树上结点(家谱成员)的路径(即从根结点到此结点的路径);

等操作,可以自由发挥。

题目8:队列的应用——火车厢重排问题

假设一列货运列车共有n节编号分别为1~n的车厢,在进站前这n节车厢并不是按其编号有序排列;现要求重新排列各车厢,使该列车在进入车站时,所有车厢从前到后按编号1~n 的次序排列,以便各车厢能够停靠在与其编号一致的站点。

为了达到这样的效果,可以在一个转轨站里完成车厢的重排工作。在转轨站中有一个入轨,一个出轨和K个位于入轨与出轨间的缓冲铁轨。如下图所示。开始时,具有n节车厢的货车从入轨处进入转轨站;转轨结束时,各车厢从右到左按照编号1~n的次序通过出轨处离开转轨站。

相关文档
最新文档