当前位置:文档之家› 数据结构课程设计--校园导航图

数据结构课程设计--校园导航图

extern void Dispath(int dist[],int path[],int s[],int v,int i);
extern void Ppath(int path[],int i,int v);
void Point(MGraph p)
{
int x,y;
printf("请输入您所在的位置及目的地\n");
{8,32767,32767,8,32767,32767,6,32767,32767}};
p.n=M;p.e=N;
int i,j;
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
p.edges[i][j]=a[i][j];
for(i=1;i<=M;i++)
p.vexs[i].no=i;
typedef struct mgraph
{ int edges[MAXV][MAXV];
int n,e;//元素总个数边数
VertexType vexs[MAXV];
}MGraph;
extern void Check();
extern void Order(MGraph);
extern void Point(MGraph);
extern void Out(int x);
void Order(MGraph p)
{
int a[M+1][M+1];
a[M+1][M+1]={{0,1,2,3,4,5,6,7,8},
{1,0,5,32767,32767,32767,32767,32767,32767},
{2,5,0,10,8,32767,32767,32767,32767},
{
int INF=32767;
int dist[MAXV],path[MAXV];
int s[MAXV];
int mindis,i,j,u;
for(i=1;i<=g.n;i++)
{
dist[i]=g.edges[v][i];//距离初始化
s[i]=0;//s[]置空
if(g.edges[v][i]<INF)//路径初始化
extern void Beidamen();
extern voidXingzhenglou();
extern voidTushuguan();
extern voidJuyuan();
extern voidLiyuan();
extern voidChanglang();
extern voidDongdamen();
#include<stdio.h>
#include<process.h>
#define MAXV 100
#define M 8//顶点个数
#define N 9//边的个数
typedef struct vertextype
{ int no; //顶点编号
int data; //顶点其他信息
}VertexType;
printf("2校园一日游\n");
printf("3点对点地图查询\n");
for(;;)
{
scanf("%d",&x);
if(x==1) Check();break;
if(x==2)Order(p);break;
if(x==3)Point(p);break;
if(x==4)exit (0);
else printf("请重新输入:");
Ppath(path,k,v);//找顶点k的前一个顶点
printf("%d,",k);//输出顶点k
}
void Dispath(int dist[],int path[],int s[],int v,int i)
{
if(s[i]==1)
{
printf("从%d到%d的最短路径长度为:%d\t路径为:",v,i,dist[i]);
extern voidShiyanlou();
extern voidXiaoyuan();
extern void Allnames();
void main()
{
MGraph p;
int x;
do
{
printf("欢迎进入湖北经济学院校园导航系统\n");
printf("请选择:\n");
printf("1校园景点或建筑查询\n#43;g.edges[u][j];
path[j]=u;
}
}
Dispath(dist,path,s,v,y);//输出最短路径
}
void Ppath(int path[],int i,int v)//前向递归查找路径上的顶点
{
int k;
k=path[i];
if(k==v) return;//找到了起点则返回
printf("%d,",v);
Ppath(path,i,v);
printf("%d\n",i);
}
else printf("从%d到%d不存在路径\n",v,i);
}
void Allnames()
{
printf("1北大门\n2行政楼\n3图书馆\n4桔苑\n5栎苑\n6经济学家长廊\n7东大门\n8实验楼\n");
}
}while(x!=4);
}
//查询景点或建筑
void Check()
{
int x;
do
{
printf("请选择想查询的地点\n");
Allnames();//学校各个建筑名称
printf("0校园简介\n");
printf("9返回主菜单\n");
printf("请输入:\n");
for(;;)
if(x==7)Dongdamen();break;
if(x==8)Shiyanlou();break;
if(x==0)Xiaoyuan();break;
if(x==9)return;
else printf("请重新输入0到9:");
}
}while(x>0&&x<9);
}
//校园一日游
extern void DFS(MGraph p,int v);
}
void Out(int x)
{
switch (x)
{
case 1:printf("北大门\n");
case 2:printf("行政楼\n");
case 3:printf("图书馆\n");
case 4:printf("桔苑\n");
case 5:printf("栎苑\n");
case 6:printf("经济学家长廊\n");
{
scanf("%d",&x);
if(x==1)Beidamen();break;
if(x==2)Xingzhenglou();break;
if(x==3)Tushuguan();break;
if(x==4)Juyuan();break;
if(x==5)Liyuan();break;
if(x==6)Changlang();break;
case 7:printf("东大门\n\n");
case 8:printf("实验楼\n");
}
}
void Beidamen()
{
printf("壮丽雄伟的北大门,上书湖北经济学院几个大字,\n大门对面是商业街,还有大排档,大门右边是校园\n内部的商业街,发展的很不错,也很繁华的。\n");
}
voidXingzhenglou()
rear=(rear+1)%MAXV;
queue[rear]=v;
while(front!=rear)
{
front=(front+1)%MAXV;
for(i=1;i<=M;i++)
if(p.edges[v][i]=1&&visited[i]!=1)
DFS(p,i);
}
}
extern void Dijkstra(MGraph g,int v,int y);
DFS(p,1);
}
void DFS(MGraph p,int v)
{
int i;
int queue[MAXV],front=0,rear=0;
int visited[MAXV];
for(i=0;i<=M;i++) visited[i]=0;
printf("%2d",v);
Out(v);
visited[v]=1;
if(s[j]==0&&dist[j<mindis])
{
u=j;
mindis=dist[j];
}
s[u]=1;//顶点u加入s中
for(j=1;j<=g.n;j++)//修改不在s中的顶点的距离
if(s[j]==0)
if(g.edges[u][j]<INF&&dist[u]+g.edges[u][j]<dist[j])
相关主题