数据结构交通指南系统Word文档格式.docx

上传人:b****6 文档编号:16786836 上传时间:2022-11-26 格式:DOCX 页数:14 大小:84.16KB
下载 相关 举报
数据结构交通指南系统Word文档格式.docx_第1页
第1页 / 共14页
数据结构交通指南系统Word文档格式.docx_第2页
第2页 / 共14页
数据结构交通指南系统Word文档格式.docx_第3页
第3页 / 共14页
数据结构交通指南系统Word文档格式.docx_第4页
第4页 / 共14页
数据结构交通指南系统Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构交通指南系统Word文档格式.docx

《数据结构交通指南系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构交通指南系统Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构交通指南系统Word文档格式.docx

structnode*next;

}edgenode;

typedefstruct

{charvtx;

edgenode*link;

}vexnode;

typedefvexnodeGraph[n];

;

voidFloyd(GraphG,floatA[n][n],intp[n][n])

{inti,j,k;

for(i=0;

i<

n;

i++)

fot(j=0;

j<

j++)

{A[i][j]=G[i][j];

P[i][j]=-1;

}

for(k=0;

k<

k++)

for(i=0;

for(j=0;

if(A[i][k]+A[k][j]<

A[i][j])

{p[i][j]=k;

A[i][j]=A[i][k]+A[k][j];

}

}

(2)算法提示

采用任意两点最短路径的相关算法。

4.算法设计

(1)结点类型:

structArcCell

{

intadj;

//存放弧长

bool*info;

//是否用过该弧

};

struct_MGraph

charvexs[20];

//存放站点

ArcCellarcs[20][20];

//<

i,j>

intvexnum;

intarcnum;

(2)类定义:

classMGraph//没用私有成员

{

public:

_MGraphmgraph;

//

voidDestroyGraph();

//析构函数销毁图

intLocateVex(charu);

//返回顶点在图中的位置

boolCreateDN();

//构造有向网

voidShortestPath_FLOYD(Path&

P,Distanc&

D);

(3)构造有向网:

boolMGraph:

:

CreateDN()//构造有向网

inti,j,w;

charv1,v2;

cout<

<

"

请输入站点个数,直接线路的条数:

"

cin>

>

mgraph.vexnum>

mgraph.arcnum;

\n请输入各站点名:

for(i=0;

mgraph.vexnum;

i++)//构造顶点向量

{

cin>

mgraph.vexs[i];

i++)//初始化邻接矩阵

for(j=0;

{

if(i==j)

mgraph.arcs[i][j].adj=0;

else

mgraph.arcs[i][j].adj=20000;

//infinity;

mgraph.arcs[i][j].info=false;

}

mgraph.arcnum;

i++)//构造邻接矩阵

cout<

\n请输入一条线路的起点,终点,距离(公里):

v1>

v2>

w;

intm=LocateVex(v1);

intn=LocateVex(v2);

mgraph.arcs[m][n].adj=w;

//<

v1,v2>

的权值

returntrue;

}

(4)销毁有向图:

voidMGraph:

DestroyGraph()

for(inti=0;

for(intj=0;

if(mgraph.arcs[i][j].info)

{

delete[]mgraph.arcs[i][j].info;

mgraph.arcs[i][j].info=false;

}

mgraph.vexnum=0;

mgraph.arcnum=0;

(5)定位点:

intMGraph:

LocateVex(charu)

20;

if(u==mgraph.vexs[i])

{returni;

return-1;

(6)最短路径

ShortestPath_FLOYD(Path&

D)//求每对顶点间的最短路径

//用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w]

//若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点。

intu,v,w,i;

for(v=0;

v<

v++)

for(w=0;

w<

w++)

D[v][w]=mgraph.arcs[v][w].adj;

//顶点v到顶点w的直接距离

for(u=0;

u<

u++)

P[v][w][u]=false;

//路径矩阵初值

if(D[v][w]<

20000)//从v到w有直接路径

P[v][w][v]=P[v][w][w]=true;

//由v到w的路径经过v和w两点

for(u=0;

for(v=0;

for(w=0;

if(D[v][u]+D[u][w]<

D[v][w])

//从v经u到w的一条路径更短

{

D[v][w]=D[v][u]+D[u][w];

//更新最短距离

for(i=0;

P[v][w][i]=P[v][u][i]||P[u][w][i];

//从v到w的路径经过从v到u和从u到w的所有路径

5.源代码

#include<

iostream>

usingnamespacestd;

typedefintPath[20][20][20];

typedefintDistanc[20][20];

请输入站点个数,直接可达线路的条数:

\n请输入其中一条线路的起点站点名,终点站点名,需要时间(分钟):

returni;

P[v][w][i]=P[v][u][i]||P[u][w][i];

voidmain()

{

MGraphg;

Pathp;

//3维数组

Distancd;

//2维数组

ints,t,k;

charv1,v2;

floatsum=0;

\n***************欢迎使用交通指南系统**************\n"

endl;

g.CreateDN();

cout<

\n请依次输入您的出发站和目的站站点名称:

v2;

s=g.LocateVex(v1);

t=g.LocateVex(v2);

g.ShortestPath_FLOYD(p,d);

if(s!

=t)

{

inta=s;

cout<

\n由站点"

g.mgraph.vexs[s]<

到站点"

g.mgraph.vexs[t]<

途中经过站点:

for(k=0;

g.mgraph.vexnum;

if(p[s][t][k]==1)

{cout<

g.mgraph.vexs[k]<

sum=sum+g.mgraph.arcs[a][k].adj;

a=k;

}

最短时间:

sum<

分钟"

\n\n***************感谢您的使用!

*****************"

\n\n***************祝您旅途愉快!

g.DestroyGraph();

6.举例测试及运行结果

例:

7.收获与体会

这是一个实际应用题。

本实验的核心代码是用FLOYD算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w],其中利用到了一些稍许繁琐的数据存储结构。

通过本实验,我觉得熟练掌握所学的算法对于编程解决实际问题非常有效。

我们应该在平时多用我们所学的数据结构知识编写程序,尝试解决实际的问题。

刚开始的时候,根据书上的提示自己编写好程序输入电脑,然后编译的时候,出现了许许多多各种各样的问题,回头查看程序,自己却很难找到问题所在,于是查阅各种资料,问了身边很多同学,终于将程序顺利调试出来了。

通过这个系统的实现,我从输入代码跟运行调试的整个过程中学习到了很多东西,也了解到系统出现问题的时候的各种错误应该如何解决。

这次的实验使我了解到,平时对知识的积累相当重要,同时也要注重课上老师的讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用,同时,编程也要求我们有足够的耐心,细细推敲。

越着急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西都是可以完成的。

数据结构这门课程更加注重设计灵活、巧妙的算法,提高程序运行效率,这对我逻辑思维能力的提高有相当大的帮助。

虽然这学期学完了这门课程,但我在以后的学习中不会放下数据结构,而是经常回顾温习,并多从生活中寻找和发现问题,进而尝试用数据结构的知识设计算法,并进行简单的实现。

相信这样的积累过程对我今后的学习生活大有帮助,让我受益终生。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1