数据结构期末课程设计

该博客介绍了数据结构课程设计中利用Floyd算法解决学校平面图中重要场所间最短路径的问题。通过分析和编程,展示了Floyd算法在寻找图中任意两点间最短路径的应用,探讨了算法的时间复杂度和空间复杂度,并分享了编程实践中的体会和收获。
摘要由CSDN通过智能技术生成

数据结构课程设计实验报告

实训目的

通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。

实训环境

计算机windows xp或其它版本,VC6.0或更高版本,或其它语言环境。

一、问题描述

题目0.GDOU是真是一个好地方,校园如一座大花园,美丽而宽广。校园有许多建筑如教学楼、饭堂、宿舍楼、图书馆、体育馆、运动场、商业街、医院等,还有一些著名的风景点。现请根据学校的平面图,找出一些重要的场所,画出学校的平面图(场所可以根据其重要性适当减少),根据实际画出不同点间的路径,并估算每两个场所间的路径长。请设计数据结构并编程,当给出一个出发点和要到达另外一个场所的信息时,请给出最佳路径,并输出路径相关信息。 

 

大致给的平面图如下(边数和顶点数可以按照实际的要求进行增减):

 

二、问题分析

主要是求出n个顶点到任意一个顶点的最短路径,本次代码主要是用floyd方法来求出最短路径问题。

(一)主要的数据元素有如下:

1.顶点数有7个——标号从0到6,字符串为‘abcdefg’

2.边数有12条边

3.边上的数为权值(两个顶点之间的距离)

(二)实现要点:

1.对图采用了邻接矩阵的存储结构,而且对图的操作设计成了模版类。为了便于处理,对于图的每一个顶点和边都设置了初值

2.为了便于访问,用户可以直接输入任意两个顶点,就会输出这两点之间的距离为多少

三、逻辑结构和存储结构设计

逻辑结构是图结构,存储结构是邻接表存储方法。

四、算法分析

Floyd算法也称为弗洛伊德算法,是解决给定加权图中顶点间的最短路径的一种算法,可以正确的处理有向图或负权的最短路径问题,同时也是被用于计算有向图的传递闭包。是通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。

根据floyd算法求出最短路径问题,假设从顶点编号vi到vj的弧是最短路径,然后进行n次试探。首先进行vi,vj和vi,v0,vj的路径长度,取长度较短者作为从vi到vj中间顶点的编号不大于零的最短路径。在路径上再增加一个顶点v1,将vi,..,v1,...,vj和已经得到的从vi到vj中间那顶点的编号不大于零的最短路径相比较,取长度较短者作为中间顶点的编号不大于1的最短路径。以此类推,在一般情况下&

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值