IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
数据结构课程设计最短路径问题实验报告
目录
TOC\o"1-3"\h\u
交通咨询系统设计(最短路径问题)
一、概述
在交通网络日益发达的今天,针对人们关心的各种问题,利用计算机建立一个交通咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的交通关系,所带权值为两个城市间的耗费。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城途中中转次数最少;如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低等等的一系列问题。
二、系统分析
设计一个交通咨询系统,能咨询从任何一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。
针对最短路径问题,在本系统中采用图的相关知识,以解决在实际情况中的最短路径问题,本系统中包括了建立图的存储结构、单源最短问题、对任意一对顶点间最短路径问题三个问题,这对以上几个问题采用了迪杰斯特拉算法和弗洛伊德算法。并未本系统设置一人性化的系统提示菜单,方便使用者的使用。
三、概要设计
可以将该系统大致分为三个部分:
建立交通网络图的存储结构;
解决单源最短路径问题;
实现两个城市顶点之间的最短路径问题。
交通咨询系统
交通咨询系统
迪杰斯特拉算法(单源最短路径)费洛依德算法(任意顶点对间最短路径)建立图的存储结构义
迪杰斯特拉算法(单源最短路径)
费洛依德算法(任意顶点对间最短路径)
建立图的存储结构义
迪杰斯特拉算法流图:
弗洛伊德算法流图:
四、详细设计
建立图的存储结构
定义交通图的存储结构。邻接矩阵是表示图形中顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下定义的n阶方阵。
注:一个图的邻接矩阵表示是唯一的!其表示需要用一个二维数组存储顶点之间相邻关系的邻接矩阵并且还需要用一个具有n个元素的一维数组来存储顶点信息(下标为i的元素存储顶点的信息)。
邻接矩阵的存储结构:
#defineMVNum1003131771617476326464562624552553北京西安70416952349徐州成州515796512368上海13857广州6华大学出版社.
3
13
17
7
1
61
74
76
32
64
6
4
56
26
2
45
5
2553
北京
西安
704
1
695
2
349
徐州
成都
511
812
3
4
郑州
5
1579
651
2368
上海
1385
7
广州
6
【2】《数据结构课程设计》苏仕华.极械工业出版社.
附录
#include<>
#include<>
#defineMVNum100
#defineMaxint32767
enumboolean{FALSE,TRUE};
typedefcharVertexType;
typedefintAdjmatrix;
typedefstruct{
VertexTypevexs[MVNum];
Adjmatrixarcs[MVNum][MVNum];
}MGraph;
intD1[MVNum],p1[MVNum];
intD[MVNum][MVNum],p[MVNum][MVNum];
voidCreateMGraph(MGraph*G,intn,inte)
{
inti,j,k,w;
for(i=1;i<=n;i++)
G->vexs[i]=(char)i;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
G->arcs[i][j]=Maxint;
printf("输入%d条边的及w:\n",e);
for(k=1;k<=e;k++){
scanf("%d,%d,%d",&i,&j,&w);
G->arcs[i][j]=w;
}
printf("有向图的存储结构建立完毕!\n");
}
voidDijkstra(MGraph*G,intv1,intn)
{
intD2[MVNum],p2[MVNum];
intv,i,w,min;
enumbooleanS[MVNum];
for(v=1;v<=n;v++){
S[v]=FALSE;
D2[v]=G->arcs[
c语言单源最短路径问题实验报告 数据结构课程设计最短路径问题实验报告-032652.docx-原创力文档...