1、void ShortestPath_DIJ(MGraph * G);void Search(MGraph *G);int LocateVex(MGraph *G,char* v);/*主函数*/void main(void) system(color 5f); /*修改控制台的颜色信息,改为白字蓝底的模式*/mode con: cols=140 lines=130 /*设置批处理运行时窗口大小的*/cmd();/*自定义函数*/* cmd函数(根据目录选择要进展的项目)*/void cmd(void) char k;b=InitGraph();show1();Menu();while(1) s
2、canf(n%c,&k);switch(k) casex: system(cls show1(); Menu(); list(); ShortestPath_DIJ(&b); printf(-欢送您的使用-nn请您继续选择效劳:break;y Search(&zprintf( n 感使用 n 建筑术大学 n 智能导航系统 n n exit(0);default:输入信息错误!n请输入x或y或z.n/* 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点 */void ShortestPath_DIJ(MGraph * G) int v,w,i,min,t=0,x,flag=1,v0
3、,v1,have100,k;int final20, D20, p2323;while(flag) 请输入起始景点编号:n scanf(%dv0);if(v0G-vexnum) 景点编号不存在!请输入终止景点编号:v1);if(v1if(v0=0&v0v1vexnum)flag=0;for(v=0;varcsv0v.adj;for(w=0;w+w) pvw=INFINITY;if(DvINFINITY) pvv0=1; pvv=1; Dv0=0; finalv0=1;have0=v0;for(i=1;i+i) min=INFINITY;if(!finalw)if(Dwarcsvw.adj)ar
4、csvw.adj;for(x=0;x%s,G-vexshavei.name);if(v1-v0)=1)printf(n路径长度:%dnarcsv0v1);else printf(,Dv1);/ShortestPath_DIJ end/*查找函数的建立 */void Search(MGraph *G) int k,flag=1;请输入要查询的景点编号:if(k请重新输入景点编号:if(kkvexsk.name,G-vexsk.introduction);n/Search endvoid show1() printf(tt 欢送使用建筑大学智能导航系统 nttt建筑大学南校区简单版平面图nnt 学
5、校北门nt nt 北食堂宿舍楼1nt nt 宿舍楼2nt 九月桥nt 主教楼 nt 日月广场nt 图书馆nt 还在建nt 南食堂宿舍楼15nt 南苑超市 nvoid list()学校景点列表:0:学校北门1:宿舍楼1 2:宿舍楼2 3:宿舍楼15 4:九月桥n5:主教楼 6:图书馆 7:日月广场 8:体育场n9:还在建10:南食堂 /*目录函数的构建*/void Menu() n 建筑大学南校区导游图n x.选择出发点和目的地 n y.查看景点信息 n z.退出系统 n请选择效劳/*MGraph函数图的构建*/MGraph InitGraph(void) MGraph G;int i,j;G.
6、vexnum=17; /顶点是17个G.arcnum=25; /弧线有25个G.vexnum;i+) G.vexsi.num=i;strcpy(G.vexs0.name,strcpy(G.vexs0.introduction,学校的正门,气势宏伟strcpy(G.vexs1.name,宿舍楼1strcpy(G.vexs1.introduction,睡觉的地方strcpy(G.vexs2.name,宿舍楼2strcpy(G.vexs2.introduction,strcpy(G.vexs3.name,宿舍楼15strcpy(G.vexs3.introduction,,strcpy(G.vexs4
7、.name,九月桥strcpy(G.vexs4.introduction,连接生活区和教学区的桥。strcpy(G.vexs5.name,主教楼strcpy(G.vexs5.introduction,教学,开会strcpy(G.vexs6.name,图书馆strcpy(G.vexs6.introduction,安静当学霸的地方strcpy(G.vexs7.name,日月广场strcpy(G.vexs7.introduction,有漂亮喷泉的广场strcpy(G.vexs8.name,体育场strcpy(G.vexs8.introduction,运动健身的地方strcpy(G.vexs9.nam
8、e,strcpy(G.vexs9.introduction,学校新修的实验楼,灰常高大上strcpy(G.vexs10.name,南食堂strcpy(G.vexs10.introduction,不好吃for(j=0;jj+) G.arcsij.adj=INFINITY; G.arcs01.adj=50; G.arcs12.adj=15; G.arcs13.adj=40; G.arcs23.adj=30; G.arcs03.adj=90; G.arcs34.adj=30; G.arcs49.adj=1000; G.arcs45.adj=20; G.arcs56.adj=10; G.arcs67.
9、adj=8; G.arcs68.adj=12; G.arcs78.adj=7; G.arcs09.adj=30; G.arcs910.adj=500; G.arcs1011.adj=25; G.arcs1112.adj=8; G.arcs1213.adj=5; G.arcs1314.adj=10; G.arcs1214.adj=10; G.arcs1415.adj=150; G.arcs1516.adj=3; G.arcs515.adj=150; G.arcs415.adj=30; G.arcs111.adj=300; G.arcs814.adj=40;G.arcsji.adj=G.arcsij.adj;return G;/InitGraph end