ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:295.71KB ,
资源ID:10398959      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10398959.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(东北大学数据结构实践实验报告.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

东北大学数据结构实践实验报告.doc

1、课程编号:B080109010数据结构课程设计总结报告姓名 燕江弟 学 号 20144671班级 软件 1404 班 指 导 教 师 刘益先实验名称 数据结构课程设计开设学期 2016-2017 第 一 学 期开设时间 第 10 周 第 12 周报告日期 2016-11-25评 定 人评定成绩评 定 日 期 2016-11-28东北大学软件学院1第一章需求分析1.1 建立主程序应用菜单选项主程序应用菜单选项包含所实现的所有功能,并且对选项采用数字标识进行选择,对其他错误输入可以进行判别,提示输入错误。1.2 导游线路图的创建级景区分布图的输出用邻接链表存储景点分布图的信息, (带权无向)图的邻

2、接链表。输出景区景点分布图(邻接矩阵) 。图中边的权值用 32767 表示。1.3 输出导游线路图景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。1.4 输出导游线路图中是否有回路景区旅游信息管理系统中,创建好导游路线图后,判断该图中是否存在回路。1.5 查找及排序 查找功能: 可以根据用户输入的关键字进行景点的查找,关键字可以在景点名称也可以在景点介绍中。查找成功则返回景点的相关简介,如果查找不成功请给予正确提示。 排序功能:按景点欢迎度,景点的岔路数对景点进行排序并打印出来排序顺序。1.6 输出两个景点之间最短

3、路径和最短距离求出两个景点间的最短路径和最短距离,并且输出道路修建规划图。 算法采用迪杰斯特拉算法。1.7 输出道路修建规划图道路建设首先要保证能连通所有景点,但又要花最小的代价。1.8 输出车辆的进出信息1.8.1 具体需求:停车场是一个可以停放 n 辆汽车,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次排列,若车场内已停满 n 辆车,后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它2车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须

4、按它停留的时间长短交纳费用。输出每辆车到达后的停车位置(停车场或便道上) ,以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。1.8.2 停车场的管理流程如下:A.当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入停车场;如果停车场已满,则车辆进入便道等候。B.当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再让该车退出停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。之后,再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。1.8.3 车辆出入清单:每一组输入数据包括三个数据项:汽车“到达”或“ 离去”信息、汽车牌照号码以及到达或离

5、去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费) 。1.9退出整个程序。第二章系统设计2.1 总体设计:2.1.1:具体数据结构定义首先需要创建节点类,邻接边类,无向图类以及停车类。节点类包括了存储的景点名称,景点介绍,景点的欢迎度,景点有误休息区,景点有无厕所以及指向下一条邻接边的指针。邻接边类包括了邻接点的序号,边的权值(即是距离)以及指向下一条边的节点指针。无向图类包括了该图中所需要的节点个数,所需要的邻接边数以及存储具体节点和边的指针。具体如下:

6、class ArcNode public:int adjvex;ArcNode *nextarc;double weight;class VNode public:string data1;string data2;int wel;bool wc;bool rest; ArcNode *firstarc;3class ALGraph public:VNode *vertices;int vexnum, arcnum;ArcNode *arcNode;class zanlindpublic:int number;string time;2.1.2 :具体功能实现方法: a. 景区景点分布图的创建

7、:int LocateVex(ALGraph G, string v)void CreateUDN(ALGraph b 输出景区景点分布图:void PrintAdjList(ALGraph G.vertices=new VNodeMAX;fstream file(“C:Users22291_000Desktop数据结构info.txt“);if(file.fail()cout G.vexnumG.arcnum;int i=0;coutG.verticesi.data1G.verticesi.data2 G.verticesi.wel G.verticesi.restG.verticesi.w

8、c;G.verticesi.firstarc = NULL;i+;coutv1v2weight;int i = LocateVex(G, v1);int j = LocateVex(G, v2);s = new ArcNode();t = new ArcNode();s-adjvex = j;s-nextarc = G.verticesi.firstarc;s-weight=weight;5G.verticesi.firstarc =s;t-adjvex = i;t-nextarc = G.verticesj.firstarc;t-weight=weight;G.verticesj.first

9、arc =t; b.深度优先遍历算法:具体如下:void DFSTraverse(ALGraph G)bool sta20;int v;for (v = 0; vstatus;int n=0;int num = -1;int pk;ArcNode *e;cout “;sta0 =false;status.push(0);int aa, bb;aa = 0;while (n adjvex = false)e = e-nextarc; elsestatus.push(e-adjvex);cout adjvex.data1“;aa = e-adjvex;stae-adjvex = false;n+;

10、break; if (e = NULL)pk = status.top();bb = pk;if (aa != bb)cout “;status.pop();if (status.top() = 0)cout “;cout zan.number;coutnumber;if(isInZan(z,number) while(parking.top().number!=number) cars.push(parking.top();parking.pop();time_t t = time(0);char tmp64; strftime(tmp,sizeof(tmp),“%X “,localtime

11、(cout,其中 u 为集合 Vnew 中的元素,而 v 不在 Vnew 集合当中,并且 vV(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一) ,然后将 v 加入集合 Vnew 中,将边加入集合Enew 中,最后使用集合 Vnew 和 Enew 来描述所得到的最小生成树。难点:在创建中需要反复判断是否回路。解决方案:每次加入新的节点后判断有无回路。3.5 查找及排序实现过程:查找时让游客输入含有景点信息的关键字,然后逐一从图的节点遍历,若节点的名称或者是简介中包含此关键字,则输出该景点所有信息,若是多个,则将多个按遍历顺序输出所有节点所有信息。排序时将欢迎度或者是岔路数(

12、即是节点度数)按照冒泡排序进行排序。然后输出节点名称的排序顺序。难点:如何在节点名称和简介中判断是否含有关键字。解决方案:采用了 C+库函数中的 find()函数来实现。3.6 输出车辆的进出信息实现过程:采用栈与队列的思想,当一个汽车来时,都以栈的形式进入停车场(即是谁先来谁在最里面,先进后出) ,如果停车场满了,那么就在路边等候空位出现,在等待时采用队列思想,谁先来谁先走(即是谁先进入空位) 。如果某辆车要离开,则位于前面的车都以出栈的形式出来,先停在空闲处为其让位,在让位时采用进栈思想,谁在前面,谁先进去。然后的离开后,依次出栈的思想进入停车场,这样就不会弄乱次序。难点:当停车场满了后,

13、有车离开时,如何让等待的车按顺序进入直到又满为止。解决方案:采用队列的思想,让等待的车存储在队列中,当满后有车离开时,队列中的车依次出队列进入停车场,在此过程中顺便判断停车场是否已满。第四章系统测试4.1. 测试方法:输入不同特征的几组数据,验证输出结果是否符合需要。84.2. 测试用例(应该给出几组具有不同特征的数据进行测试):(1)节点信息:a qwer 3 1 1 b asdfg 1 0 1 c rtyuio 4 1 0邻接边信息:a b 1 a c 2 b c 5.(2)节点信息:a asdfg 3 1 1 b sdfgh 4 1 0 c asdfg 1 0 1 d werty 2 1

14、 0 eqwert 5 0 0邻接边信息:a b 1 a c 2 b d 2 b e 34.3. 测试结果:94.4. 出现的问题及解决办法:(1)在输出导游路线图时,栈的存储顺序有问题导致输出顺序存在偏差解决办法:深度遍历时,栈存储之前判断有没有访问过该节点,若没有则压栈存储进10去。(2)查找两个节点最短距离及输入菜单选项时,输入有误时程序直接终止。解决方法:在每次输入后,先判断输入是否合理。第五章结论5.1.程序运行的最终结果:11125.2. 系统实现的功能:(1)输出菜单界面(2)导游线路图的创建:(3) 输出景区景点分布图:13(4)输出导游线路图及线路图中是否有回路:(5).查找

15、及排序:(6)输出两个景点之间最短路径和最短距离:(7)输出道路修建规划图:(8)输出车辆的进出信息:(9)退出系统。5.3. 主要创新点:(1)在创建图时采用了头插法在节点之后插入邻接边。(2)在测试数据时直接从文件里读取,避免了手动反复多次输入。(3)在输出路线图时自己增加了输出邻接链表。(4)在输出导游路线图时用了栈存储访问顺序,到返回时直接弹栈输出即可。(5)在所有输入后,先判断输入是否合理和正确,以增强代码的健壮性。(6)在停车场问题上,用一个一维数组来标记已在车场中的车牌号。参考文献例:1 数据结构、算法与应用:C+语言描述 Data Structures,Algorithms,a

16、nd Applications in C+M.机械工业出版社 出版时间: 2000-01-01.2 数据结构 (C 语言版) M.北京: 中国铁道出版社, 2011-08-01.附录:数据结构课程设计实验成绩评定表14评价内容 具 体 要 求 分值 得分平时表现 课程设计过程中,无缺勤、迟到、早退现象,学习态度积极。课设过程未做与课设无关的事情。 10报告质量 实验报告格式规范,体例符合要求;报告内容充实、正确,实验目的归纳合理到位,思考题回答准确。 40创新性 在实践内容实现上,有自己独立的想法,并在功能实现上有一定的创新性。 10实验内容能够按实验要求合理设计并开发出程序,认真记录实验数据,原理及实验结果分析准确,归纳总结充分。程序代码书写规范,简洁。代码块区别显著,有重要位置的注释内容。40总 分

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报