盐城工学院数据结构课程设计拯救.doc

盐城工学院数据结构课程设计拯救.doc

ID:57377770

大小:198.00 KB

页数:21页

时间:2020-08-13

盐城工学院数据结构课程设计拯救.doc_第1页
盐城工学院数据结构课程设计拯救.doc_第2页
盐城工学院数据结构课程设计拯救.doc_第3页
盐城工学院数据结构课程设计拯救.doc_第4页
盐城工学院数据结构课程设计拯救.doc_第5页
资源描述:

《盐城工学院数据结构课程设计拯救.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构课程设计题目:最短路径—拯救007问题专业计算机科学与技术(物联网技术应用)学生姓名***班级B计算机125班学号**指导教师王翠香完成日期2014年1月10日目录1简介32算法说明33测试结果64分析与探讨95小结9参考文献12附录13一、简介最短路径是,在一个图中,若从一个顶点到另一个顶点存在着一条路径(这里只讨论无回路的简单路径),则称该条路径长度为为该路径上所有经过的边的数目,它也等于该路径上的顶点数减1。由于从一个顶点到另一个顶点可能存在着多条路径,在每条路径上所经过的边数可能不同,把路径长度最短(经过的边数最少)的那条路径叫做最短路径,其路径长度叫做最短距

2、离。这是对无权图而言的,若图是帯权图,则把从一个顶点vi到vj的一条路径上所有经过边的权值之和定义为该路径的带权路径长度。把带权路径长度最短的那条路径称为该有权图的最短路径,其路径长度称为最短距离。Dijksra算法:如何求解从一个顶点到其余每个顶点的最短路径呢?狄克斯特拉于1959年提出了解决此问题的一种按路径长度的递增次序产生最短路径的算法。基本思想是,从图中给定源点到其他各个顶点之间客观上应个存在一条最短路径,在这组最短路径中,按其长度的递增次序求出到不同顶点的最短路径和路径长度。图是一种较线性结构和树形结构更为复杂的非线性数据结构,这种复杂性主要来自数据元素之间的复杂

3、关系。在图结构中,任何两个数据元素之间都可能存在关系,一般用顶点表示数据元素,而用顶点之间的连线表示数据元素之间的关系。图的二元组定义为:G=(V,E)。其中V是非空的顶点集合,E是V上的二元关系集合。题目内容:看过007系列的电影的人们一定很熟悉JamsBond这个世界上最著名的特工了。在电影“LiveAndLetDie”中JamsBond被一组毒品贩子抓住并且关到湖中心的一个小岛上,而湖中有很多凶猛的鳄鱼。这时JamsBond做出了一个最惊心动魄的事情来逃脱——他跳到了最近的鳄鱼的头上,在鳄鱼还没有反映过来的时候,他有跳到另一支鳄鱼的头上.。。。。。。最后他终于安全地跳到

4、了湖岸上。假设湖是100*100的正方形,设湖的中心在(0,0),湖的东北角的坐标是(50,50)。湖中心的圆环小岛的圆心在(0,0),直径是15.。一些凶残的鳄鱼分布在湖中不同的位置。现已知的湖中的鳄鱼的位置和JamsBond可以跳的最大距离,请你告诉JamsBondyitiao最短的到达湖边的路径。他逃出去的路径长度等于他跳的次数。二、算法说明程序从“input.txt”文件中读取输入信息,这个文件包含了多组输入数据。每组输入数据的起始行中包含了两个整数n和d,n是鳄鱼的数量而且n<=100,d是007可以跳的最大距离而且d>0。起始行下面的每一行是鳄鱼的坐标(x,y),

5、其中x,y都是整数,而且没有任何两只鳄鱼出现在同一位置。Input.txt文件以一个负数结尾。输出要求:程序结果输出到output.txt文件中。对于每组输入数据,如果007可以逃脱,则输出到output.txt文件的内容格式如下:第一行是007必须跳的最小步数,然后按照跳出顺序记录跳出路径上的鳄鱼坐标(x,y),每行一个坐标。如果007不可能跳出去,则将-1写入文件。如果这里有很多个最短路径,只需输入其中的任意一种。输入例子:410/*第一组输入数据*/170270370450110/*第二组输入数据*/2030-1输出例子:5/*对应第一组数据的输出*/170270450

6、-1/*对应第二组数据的输出*/提示:将每个鳄鱼看作图中的每一个顶点。如果007可以从A点跳到B点,则A和B之间就有一条边。主要数据结构与算法:为了记录007跳过的路径,可定义为如下结构:typedefunsignedintVertez;typedefdoubleDistance;typedefstructGraphNodeRecord{intX;/*x轴坐标*/intY;/*y轴坐标*/unsignedintStep;/*记录到本节点一共跳了多少步*/VertexPath;/*指向本节点的父节点,即跳到本节点之间007所在节点*/}GraphNode;typedefGrap

7、hNode*Grapha;寻找跳出路径的算法:/*读出一组测试数据返回007跳过的路径Graph,*Bank记录最短到达湖岸的路径。该算法实际上是应用队列对图惊醒广度搜索,以寻找到岸边的最短路径,其中入队列与出队列函数分别是Inject()和Pop()*/Graphread_case(FILE*InFile,intnum,Vertex*Bank,DequeD){GraphG=NULL;DistanceJamesJump;VertexV;intx,y;inti,Times;*Bank=0;/*初始化跳出的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。