300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 迪杰斯特拉算法c语言6 C语言迪杰斯特拉实现最短路径算法.doc

迪杰斯特拉算法c语言6 C语言迪杰斯特拉实现最短路径算法.doc

时间:2024-05-02 12:03:49

相关推荐

迪杰斯特拉算法c语言6 C语言迪杰斯特拉实现最短路径算法.doc

数据结构课程设计报告

----旅游咨询系统设计

目录

一、需求分析- 2 -

二、系统分析- 2 -

三、概要设计- 3 -

一、系统划分- 3 -

二、邻接矩阵建立流程图:- 3 -

三、迪杰斯特拉算法流图- 5 -

四、详细设计- 6 -

五、调试分析- 9 -

一、运行结果- 9 -

二、改进设想- 13 -

六、课设总结- 13 -

旅游咨询系统设计

一、需求分析

在交通网络日益发达的今天,人们出行有很多种方式、路线,而如何选择符合需要的方式路线成为大家的一大难题。所以,在此我利用计算机建立一个旅游咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的路线,所带权值为两个城市间的路程、时间或车费等。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低;如何选择一条路径使得从A城到B城所用的时间最少等等的一系列问题。

二、系统分析

设计一个旅游咨询系统,能咨询从任何一个城市顶点到其他城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。旅客可以在同一个系统中综合考虑自己的各目标城市,选择一个最佳的旅游路线和出行方式。

针对最短路径问题,在本系统中采用图的相关知识,采用了迪杰斯特拉算法,解决在实际情况中的最短路径问题,而迪杰斯特拉算法的时间复杂度为O(n2),空间复杂度为O(n)。本系统使用邻接矩阵存储无向图。其中,建立矩阵的时间复杂度为O(n2),但是利用其查找一条边的时间复杂度为O(1)。本系统中包括了利用邻接矩阵建立图的存储结构和单源最短问题两大部分,使用指针数组实现利用一个程序实现最短路径和最短时间的运算。并且本系统设置了人性化的系统提示菜单,方便使用者的使用。

三、概要设计

系统划分

该系统可以划分为三个部分:

利用邻接矩阵建立图的存储结构;

利用迪杰斯特拉算法解决单源最短路径问题;

实现城市之间的最短路径问题和最短时间问题。

邻接矩阵建立流程图:

四、详细设计

本课程设计的源程序如下所示:

#include

#include

#define MVNum 100

#define Maxint 9999 /*将无穷大的数值设为9999*/

typedef char vertextype;/*建立无向图*/

typedef int adjmatrix;

typedef struct

{

vertextype vexs[MVNum];

adjmatrix arcs[MVNum][MVNum];

}mgraph;

mgraph *G[2]; /*设置指针数组用以实现距离和时间最小值求取*/

void city_number() /*输出城市代表序号*/

{ printf("*************************************************************************\n");

printf(" 1、北京 2、上海 3、香港 4、天津 5、重庆 6、澳门 7、哈尔滨 8、石家庄");

printf(" \n 9、兰州 10、昆明 11、成都 12、长春 13、沈阳 14、长沙 15、海口 16、西安");

printf("\n*************************************************************************\n");

}

void Createmgraph(int a,int n,int e) /*建立无向邻接矩阵*/

{int i,j,k;

int w;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(i==j) G[a]->arcs[i][j]=0; /*邻接矩阵对角线初始值设为0*/

else G[a]->arcs[i][j]=Maxint; /*其他元素设为无穷大*/

for(k=1;k<=e;k++) /*读入e条边数的信息*/

{printf("\n输入图中各起点终点及其权值i,j,w:"); /*读入无向边及其权值*/

scanf("%d,%d,%d",&i,&j,&w);

G[a]->arcs[i][j]=w;

G[a]->arcs[j][i]=w;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。