数据结构课程实验报告要求跟题目文档格式.docx
- 文档编号:18996429
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:16
- 大小:34.37KB
数据结构课程实验报告要求跟题目文档格式.docx
《数据结构课程实验报告要求跟题目文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程实验报告要求跟题目文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
选定题目(学号后3位mod题目总数)+1=题目编号,例如:
学号尾数为100,题目总数为13,则应选第10题完成100mod13=9,9+1=10)
明确题目要求、确定数据结构、算法描述,准备测试数据等
星期二至星期四
完成要求问题并测试、归档
星期五
演示回答教师提问文档及程序的整理并提交作品
课程设计期间不迟到,不早退,有特殊情况要事先请假,并经有关老师批准方能有效,无故缺席者作旷课处理。
进入机房,应遵守机房规定的各项制度。
四、考核内容和方式
考核内容
1、课程设计报告(打印稿)
2、课程设计报告(电子版)
3、源程序(运行无误,电子版)
考核方式
指导教师根据课程设计文档、系统演示和学习态度综合考评,并结合学生的动手能力,独立分析解决问题的能力和创新精神进行评分(成绩为优秀、良好、中等、合格、不合格)。
五、其他说明
关于课程设计报告
课程设计报告是对整个设计工作的陈述和总结,是课程设计最终的文字成果。
一、报告内容要求
数据结构课程设计报告的内容框架:
第一部分:
引言
引言是报告正文的引子,引言在内容上应包括:
为什么要进行课程设计?
立题的理论或实践依据是什么?
拟创新点何在?
理论与(或)实践意义是什么?
第二部分:
系统功能和原始数据
(1)原始数据
(2)系统功能
第三部分:
程序总体设计
(1)数据结构
(2)模块划分和层次结构
(3)函数原型清单
(4)程序总体框架
(5)程序组织
第四部分:
功能模块函数设计和调试
在报告中学生应对所设计的系统进行详细的功能分析,主要模块的算法描述,绘制出系统功能模块图,并具体给出相关的程序流程图(或盒图)。
第五部分:
程序清单
列出整个系统开发的完整程序源代码,并在清单中给出程序中包含的函数等的文字说明。
第六部分:
课程设计总结
对所选题目对应程序的运行情况做详细分析,总结本次设计所取得的经验和收获。
如果程序未能全部调试通过,则应分析其原因。
第七部分:
参考资料
在设计和书写报告中所参考的资料列表。
二、报告格式要求
(一)报告输出顺序
1、封皮;
2、目录;
3、课程设计内容(上述的七个部分)。
(二)排版要求
课程设计报告要求用A4纸输出,正文一级标题用黑体三号不加粗,二级标题用宋体四号加粗,三级标题及以下标题均采用黑体四号,正文采用宋体小四。
行间距采用行距固定值18磅,段落首行缩进两个汉字,段前段后间距为0行距。
课程设计报告字数不少于2000字(不包括程序清单和程序结果的部分)。
成绩评定标准
1、优:
按要求完成题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好。
答辩回答问题正确,对系统的演示流畅,源代码解释清晰。
2、良:
完成设计题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;
有完全实现设计方案的软件,设计方案较先进。
答辩回答问题较好,对系统的演示较流畅,源代码解释较清晰。
3、中:
基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确。
答辩回答问题基本正确,对系统的演示基本完成,源代码解释较清楚。
4、及格:
基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确。
答辩回答问题基本正确,系统演示能够完成。
源代码解释基本清楚。
5、不及格:
没有完成题目的要求,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。
答辩回答问题不正确,系统演示不能够完成,源代码解释不清楚。
提交方式及要求
每个人以自己的“学号姓名”形式建立文件夹,每个人的文档及源程序存放在自己的文件夹内。
答辩时拷贝给指导教师检查、答辩。
答辩结束后拷给学习委员,学习委员将全班的设计报告和程序收集齐后交给指导教师。
任选教师(课程负责人)签名:
教研室主任签名:
学院审批:
日期:
日期:
课程设计内容与要求
题目1:
运动会分数统计
[问题描述]:
参加运动会的n个学校编号为1-n。
比赛分为m个男子项目和w个女子项目,项目编号为1-m和m+1—m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;
还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
[基本要求]:
1产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号,名次(成绩)、姓名和得分;
2产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
[实现提示]:
可以假设n<
=20,m<
=30,w<
=20,姓名长度步超过20个字符,每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。
[选作内容]:
允许用户指定某项目采取其他名次取法;
可以考虑使用图形界面实现系统。
要求:
存储结构利用链表
题目2:
迷宫求解问题
【问题描述】
以一个m×
n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
(1)以递归方式输出一条从入口至出口的通路。
(2)使用栈方式输出一条从入口至出口的通路。
(3)输出所有具有迷宫的路径
【基本要求】
编写一个求解迷宫的非递归程序。
求得的通路以三元组(i,j,d)的形式输出,其中:
(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
如:
对于下列数据的迷宫,输出的一条通路为z(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),·
·
。
【测试数据】
迷宫的测试数据如下:
左上角(1,1)为入口,右下角(8,9)为出口。
12345678
(2)以方阵形式输出迷宫及其通路。
题目3:
二叉排序树操作的演示
利用二叉排序树实现一个动态查找表
实现二叉排序树的查找、插入、删除
1)初始:
二叉排序树为空树,操作界面给出查找、插入、删除三种操作供选择,每种操作均要提示输入关键字。
每次插入或删除一个结点后,应更新二叉排序树的显示。
2)二叉排序树的显示可以采用凹入表或采用图形界面画出树形
[选作内容]:
合并两棵二叉排序树
题目4:
内部排序算法比较
各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。
试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。
基本要求:
(1)从以下常用的内部排序算法至少选取5种进行比较:
直接插入排序;
折半折入排序;
希尔排序;
起泡排序;
快速排序;
简单选择排序;
堆排序;
归并排序。
(2)待排序表的表长为20000;
其中的数据要用伪随机数产生程序产生;
至少要用5组不同的输入数据作比较;
比较的指标为有关键字参加的比较次数和关键字移动次数(关键字交换计为3次移动)。
(3)最后对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
实现提示:
主要工作是设法在已知算法中的适当位置插入对关键字的比较次数和移动次数的计数操作。
程序还可以考虑几组数据的典型性,如,正序,逆序和不同程序的乱序。
选作内容:
1)增加折半插入排序、二路插入排序、归并排序、基数排序等。
2)对不同的输入表长作试验,观察检查两个指标相对于表长的变化关系。
还可以对稳定行作验证。
题目5:
哈夫曼编码和译码
利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼编/译码系统。
基本要求:
一个完整的系统应具有以下功能:
(1)初始化(Initialization)。
从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,(选做:
并将它存于文件hfmTree中)。
并显示出每个字符的编码。
(2)编码(Encoding)。
利用已建好的哈夫曼树(选做:
如不在内存,则从文件htmTree中读入),对输入的字符串文本(选做:
对文件ToBeTran中的正文)进行编码,(选做:
然后将结果存入文件CodeFile中。
)并显示在屏幕上。
(3)译码(Decoding)。
利用已建好的哈夫曼树将输入的代码进行译码(选做:
将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
),并显示在屏幕上。
(4)打印哈夫曼树(TreePrinting)。
将已在内存中的哈夫曼树以直观的方式显示在屏幕上。
要求:
利用文件存储输入和输出结果。
题目6:
建立N个城市的最小代价通讯网络
输入N个城市相互之间建立通讯的代价,并存储在文件中;
构造一个通讯网络,使得N个城市能够连通并且代价最小。
设图的顶点数不超过30,边的权值小于100,可以用随机数函数产生。
通过顶点数和边的输入,构造出的逻辑示意图;
图需要采用两种存储结构,分别利用prim和kruskal算法实现最小生成树,以文本形式输入生成树中的各条边和权值。
选作内容;
利用堆排序实现选择权值最小的边。
题目7:
关键路径算法的实现
输入一个表示工程活动关系的AOV网,输出其关键路径,并给出完成该工程所需的最短时间。
题目8:
校园导游程序
【问题描述】
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
(1)设计你所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;
以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
由读者根据实际情况指定。
【实现提示】
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。
顶点和边均含有相关信息。
【进一步完成内容】
(1)求校园图的关节点。
(2)提供图中任意景点问路查询,即求任意两个景点之间的所有路径。
(3)提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。
(4)校园导游图的景点和道路的修改扩充功能。
(5)扩充道路信息,如道路类别(车道、人行道等)、沿途景色等级,以至可按客人所需分别查询人行路径或车行路径或观景路径等。
(6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。
(7)实现校园导游图的仿真界面。
题目9:
哈希表
问题描述:
针对同班同学中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。
wan通讯录,学生信息有姓名,学号,电话号码等。
以学生姓名为关键字设计哈希表,并
姓名以汉语拼音形式,待填入哈希表的人名约30个,取平均查找长度的上限为2.哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。
如果书记函数自行构造,则应首先调整好随机函数,使其分布均匀。
人名的长度均不超过19个字符。
字符的取吗方法可以直接利用C语言中的toascii函数,并可对过长的人名先作折叠处理。
1)设计几个不同的哈希函数,比较它们的地址冲突率(可以用更大的名字集合做测试)
2)研究这30个人名的特点,努力找一个哈希函数,使得对于不同的拼音名一定不发生地址冲突
3)在哈希函数确定的前提下,尝试各种不同处理冲突的方法,考查平均查找长度的变化和造好的哈希表中关键字的聚簇性。
题目10:
一元稀疏多项式计算器
设计一个一元稀疏多项式简单计算器。
一元稀疏多项式简单计算器的基本功能是:
(1)输入并建立多项式;
(2)输出多项式,输出形式为整数序列:
n,cl,el,c2,e2,…,cn,en,其中n是多项式的项数,ci和ei,分别是第i项的系数和指数,序列按指数降序排列;
(3)多项式a和b相加,建立多项式a+b;
(4)多项式a和b相减,建立多项式a-b。
(5)计算多项式在x处的值。
(6)求多项式a的导函数
(7)多项式a和b相乘,建立乘积多项式ab。
(8)多项式的输出形式为类数学表达式。
例如,多项式-3x8+6x3-18的输出形式为
,x15+(-8)x7-14的输出形式为
注意,数值为1的非零次项的输出形式中略去系数1,如项1x8的输出形式为x8,项-1x3的输出形式为-x3。
(9)计算器的仿真界面。
(1)(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.lx11+11x9+2x+7)
(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)
=(-7.8x15-1.2x9+12x-3-x)
(3)(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)
(4)(x+x3)+(-x-x3)=0
(5)(x+x100)+(x100+x200)=(x+2x100+x200)
(6)(x+x2+x3)+0=x+x2+x3
(7)互换上述测试数据中的前后两个多项式
用带表头结点的单链表存储多项式。
题目11:
停车场管理
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内己停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
以桟模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达“或“离去“信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:
若是车辆到达,则输出汽车在停车场内或便道上的停车位置;
若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
题目12.航空客运订票系统
航空客运订票的业务活动包括:
查询航线、客票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
(1)每条航线所涉及的信息有:
起点站名,终点站名、航班号、飞机号、飞行日期、乘员定额、余票量、已订票的客户名单(包括姓名、订票量及所订的座位号)以及等候替补的客户名单(包括姓名、所需票量);
(2)系统能实现的操作和功能如下:
(1)录入:
可以录入航班情况,录入的航班数据可存于内存中,每天结束工作时内存中的数据可通过“保存录入航班数据”添加存入文件中;
提示:
使用合适的结构组织,使它方便按“起点站名”与“终点站名”被查找。
设一般航班记录数据文件中将保存近10000条记录。
(2)加载:
将文件中保存的航班数据至内存中。
(2)清除:
将日期超过当前日期的航班记录清除。
(3)查询航线:
根据旅客提出的“起点站名”与“终点站名”输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
(4)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号,并将订票结果保存文件中。
若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补,候补名单将保存于内存中,选择合适的数据结构以方便候补业务的处理;
④承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
(5)保存航班信息至文件中。
(6)保存订票名单。
(7)保存候补名单。
由读者自行指定。
当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他航线情况。
题目13电梯模拟
设计一个电梯模拟系统。
这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体“构成的集合,虽然他们彼此交互作用,但他们的行为是基本独立的。
在离散的模拟中,以模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。
(1)模拟某校五层教学楼的电梯系统。
该楼有一个自动电梯,能在每层停留。
五个楼层由下至上依次称为地下层、第→层、第二层、第三层和第四层,其中第一层是大楼的迸出层,即是电梯的“本垒层“,电梯“空闲“时,将来到该层候命。
(2)乘客可随机地进出于任何层。
对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
(3)模拟时钟从0开始,时间单位为0.1秒。
人和电梯的各种动作均要耗费一定的时间单位(简记为t),比如:
有人进出时,电梯每隔40t测试一次,若无人进出,则关门;
关门和开门各需要20tg
每个人进出电梯均需要25h
如果电梯在某层静止时间超过300t,则驶回1层候命。
(4)按时序显示系统状态的变化过程:
发生的全部人和电梯的动作序列。
模拟时钟Time的初值为0,终值可在500~10000范围内逐步增加。
(1)楼层由下至上依次编号为0,1,2,3,4。
每层有要求Up(上)和Down(下〉的两个按钮,对应10个变量CaliUp[0..4]和CallDOWEl[0..4]。
电梯内5个目标层按钮对应变量Caucar[0..4]。
有人按下某个按钮时,相应的变量就置为1,一旦要求满足后,电梯就把该变量清为0。
(2)电梯处于三种状态之-zGoingUp(上行)、GoingDown(下行)和Idle(停候)。
如果电梯处于Idle状态且不在1层,则关门并驶回1层。
在1层停候时,电梯是闭门候命。
一旦收到往另一层的命令,就转入GoingUp或GoingDown状态,执行相应的操作。
(3)用变量Time表示模拟时钟,初值为0,时间单位。
)为0。
l秒。
其他重要的变量有:
Floor——电梯的当前位置(楼层);
DI——值为0,除非人们正在进入和离开电梯;
D2——值为0,如果电梯已经在某层停候30Ot以上;
D3——值为0,除非电梯门正开着又无人迸出电梯;
State——电梯的当前状态(GoingUp,GoingDOWEl,Idle)。
系统初始时,Floor=1,Dl=D2=D3=0,State=Idle。
(4)每个人从进入系统到离开称为该人在系统中的存在周期。
在此周期内,他有6种可能发生的动作:
M1.[进入系统,为下一人的出现作准备]产生以下数值:
InFloor——该人进入哪层楼;
011tFloor——他要去哪层楼;
GiveupTime——他能容忍的等候时间;
Inter-Time——下一人出现的时间间隔,据此系统预置下一人进入系统的时刻。
M2.[按电钮并等候]此时应对以下不同情况作不同的处理:
①Floor=InFloor且电梯的下一个活动是E6(电梯在本层,但正在关门〉;
②Floor=InFloor且D3手0(电梯在本层,正有人迸出);
③其他情况,可能D2=0或电梯处于活动El(在1层停候)。
M3.[进入排队]在等候队列Queue[InFloor]末尾插入该人,并预置在GiveupTime个t之后,他若仍在队列中将实施动作M4。
M4.[放弃]如果Floor手InFloor或Dl=0,则从Quem[InFloor]和系统删除该人。
如果Floor=InFloor且D1学0,他就继续等候(他知道马上就可进入电梯〉。
M5.[进入电梯]从Queue[InFloor〕删除该人,并把他插入到lElevator(电梯)校中。
置Cancar[011tFloor]为1。
M6.[离去]从Elevator和系统删除该人。
(5)电梯的活动有9种:
E1.[在1层停候]若有人按下一个按钮,则调用Controler将电梯转入活动E3或E60。
E2.[要改变状态?
]如果电梯处于GoingUp(或GoingDown〉状态,但该方向的楼层却无人等待,则要看反方向楼层是否有人等候,而决定置State为GoingDown(或GoingUp〉还是Idle。
E3.[开门]置DI和D2为非0值,预置300个t后启动活动E9和76个t后启动E5,然后预置20个t后转到目。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 实验 报告 要求 题目