版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <stdio.h>#include <stdlib.h>#include <conio.h>#include<string.h>#define MaxSize 100 #define VISITED 1 #define NOTVISITED 0 #define Infinite 1073741823 #define MaxViewNum 50 /*景点个数最大50*/#define MaxRoad 1000 /*定义路径为无穷大*/#define N 16 /*目前景点个数*/typedef struct char name30
2、; /*景点名称*/ char number10; /*景点代号*/ char introduce200; /*景点介绍*/Elemtype;typedef struct int num; /*景点编号*/ Elemtype date; /*景点信息*/View; /*定义景点*/typedef struct View viewMaxViewNum; /*存放顶点的一维数组,数组第零单元没有用上*/ unsigned int lengthMaxViewNumMaxViewNum; /*存放路径长度*/ int m,n;MGraph;MGraph MGr; /*全局变量,定义MGr为MGraph
3、类型*/int shortestMaxViewNumMaxViewNum; /*定义全局变量存贮最小路径*/int pathMaxViewNumMaxViewNum; /*定义存贮路径*/void init() int i,j; MGr.view1.num=1; strcpy(MG,"学校正门"); strcpy(MGr.view1.date.number,"001"); strcpy(MGroduce,"毗邻中心大道,交通便利。"); MGr.view2.num=2;
4、 strcpy(MG,"行政楼"); strcpy(MGr.view2.date.number,"002"); strcpy(MGroduce,"学校领导,办公主楼。"); MGr.view3.num=3; strcpy(MG,"科技楼"); strcpy(MGr.view3.date.number,"003"); strcpy(MGroduce,"逸夫科
5、技楼"); MGr.view4.num=4; strcpy(MG,"家属院"); strcpy(MGr.view4.date.number,"004"); strcpy(MGroduce,"兰州理工大学,教职工家属院。"); MGr.view5.num=5; strcpy(MG,"图书馆"); strcpy(MGr.view5.date.number,"005"); strcpy(MGr
6、.roduce,"历史悠久,文化积淀。供同学安静学习的环境。"); MGr.view6.num=6; strcpy(MG,"机械基地"); strcpy(MGr.view6.date.number,"006"); strcpy(MGroduce,"土木工程学院和机电工程学院,实习实践的地方。"); MGr.view7.num=7; strcpy(MG,"学生公寓");
7、strcpy(MGr.view7.date.number,"007"); strcpy(MGroduce,"学生宿舍区,本科、研究生,以及教师公寓。"); MGr.view8.num=8; strcpy(MG,"餐厅"); strcpy(MGr.view8.date.number,"008"); strcpy(MGroduce,"清泽、智林、风味三大餐厅,周边开水房等服务场所。"); MGr.vie
8、w9.num=9; strcpy(MG,"怡情园"); strcpy(MGr.view9.date.number,"009"); strcpy(MGroduce,"学校新修建的花园,景色优美,适合同学们晨读"); MGr.view10.num=10; strcpy(MG,"体育场"); strcpy(MGr.view10.date.number,"010"); strcpy(MGr.view10
9、.roduce,"绿茵地、活动中心。篮球场、足球场、网球场依次,丰富课余生活。"); MGr.view11.num=11; strcpy(MG,"国际交流中心"); strcpy(MGr.view11.date.number,"011"); strcpy(MGroduce,"外国留学生、外籍教师上课活动场所。"); MGr.view12.num=12; strcpy(MG,"流体实验室
10、"); strcpy(MGr.view12.date.number,"012"); strcpy(MGroduce,"兰州理工大学流体实验室,同样也是理学院研究生实验室"); MGr.view13.num=13; strcpy(MG,"工大高层"); strcpy(MGr.view13.date.number,"013"); strcpy(MGroduce,"新建工大高层,是各个院办公室所在地
11、,同样也是各个院行政楼。"); MGr.view14.num=14; strcpy(MG,"教学楼"); strcpy(MGr.view14.date.number,"014"); strcpy(MGroduce,"外语院,设计院等学生日常上课的地方。"); MGr.view15.num=15; strcpy(MG,"附属中学"); strcpy(MGr.view15.date.number,&quo
12、t;015"); strcpy(MGroduce,"兰州理工大学附属中学。"); MGr.view16.num=16; strcpy(MG,"教学北楼"); strcpy(MGr.view16.date.number,"016"); strcpy(MGroduce,"外国留学生日常上课的地方。"); for(i=1;i<=N;i+) for(j=1;j<=N;j+) MGr.lengthij
13、=MaxRoad; for(i=1;i<=N;i+) shortestij=0; MGr.length12=MGr.length21=30; MGr.length23=MGr.length32=50; MGr.length34=MGr.length43=60; MGr.length35=MGr.length53=120; MGr.length56=MGr.length65=20; MGr.length67=MGr.length76=230;MGr.length69=MGr.length96=50; MGr.length78=MGr.length87=50; MGr.length89=MG
14、r.length98=230;MGr.length810=MGr.length108=50; MGr.length911=MGr.length119=50; MGr.length1011=MGr.length1110=230; MGr.length1112=MGr.length1211=60; MGr.length1213=MGr.length1312=60;MGr.length1314=MGr.length1413=60; MGr.length1114=MGr.length1411=60;MGr.length1614=MGr.length1416=80;MGr.length1315=MGr.
15、length1513=80;MGr.length216=MGr.length162=50; MGr.length11=MGr.length22=MGr.length33=MGr.length44=0; MGr.length55=MGr.length66=MGr.length77=MGr.length88=0; MGr.length99=MGr.length1010=MGr.length1111=MGr.length1212=0; MGr.length1313=MGr.length1414=MGr.length1515=MGr.length1616=0;void introduce() int
16、m; printf("请输入查询景点编号:n"); scanf("%d",&m); fflush(stdin); switch(m) case 1: printf("景点编号:%st",MGr.view1.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 2: printf("景点编号:%st",M
17、Gr.view2.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 3: printf("景点编号:%st",MGr.view3.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce);
18、break; case 4: printf("景点编号:%st",MGr.view4.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 5: printf("景点编号:%st",MGr.view5.date.number); printf("景点名称:%sn",MG); printf(&quo
19、t;景点简介:%sn",MGroduce); break; case 6: printf("景点编号:%st",MGr.view6.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 7: printf("景点编号:%st",MGr.view7.date.number); printf("景点名称
20、:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 8: printf("景点编号:%st",MGr.view8.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break;case 9: printf("景点编号:%st"
21、;,MGr.view9.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 10: printf("景点编号:%st",MGr.view10.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGro
22、duce); break; case 11: printf("景点编号:%st",MGr.view11.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 12: printf("景点编号:%st",MGr.view12.date.number); printf("景点名称:%sn",MG
23、); printf("景点简介:%sn",MGroduce); break; case 13: printf("景点编号:%st",MGr.view13.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 14: printf("景点编号:%st",MGr.view14.date.numbe
24、r); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 15: printf("景点编号:%st",MGr.view15.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; case 1
25、6: printf("景点编号:%st",MGr.view16.date.number); printf("景点名称:%sn",MG); printf("景点简介:%sn",MGroduce); break; default: printf("输入序号错误。n"); break; printf("n");void floyd() /*佛洛依德算法*/ int i,j,k; for(i=1;i<=N;i+) for(j=1
26、;j<=N;j+) shortestij=MGr.lengthij; pathij=0; /*初始化数组*/ for(k=1;k<=N;k+) for(i=1;i<=N;i+) for(j=1;j<=N;j+) if(shortestij>(shortestik+shortestkj) shortestij=shortestik+shortestkj; pathij=k; pathji=k; /*记录经过的路径*/end_if /end_for void display(int i,int j) /*打印两个景点的路径及最短路径*/ int a,b; a=i; b
27、=j; printf("您要查询的两景点间最短路径是: nn"); fflush(stdin);if(i<j) printf("%d",b); while(pathij!=0) printf("<-%d",pathij);if(i<j) j=pathij;else i=pathji; printf("<-%dnn",a); printf("%d->%d的最短路径是: %d 米。nn",a,b,shortestab);else printf("%d"
28、;,a); while(pathij!=0) /*把i到j的路径上所有经过的景点按顺序打印出来*/printf("->%d",pathij);if(i<j) j=pathij;else i=pathji; printf("->%dnn",b); printf("%d->%d的最短路径是: %d 米。nn",a,b,shortestab);/*display*/int shortdistance() /*要查找的两景点的最短路径*/ int i,j; printf("请输入要查询的两个景点的数字编号(1
29、->16)中间用空格间隔开。n"); scanf("%d %d",&i,&j); if(i>N|i<0|j>N|j<0) printf("输入信息错误!nn"); printf("请输入要查询的两个景点的数字编号(1->16)中间用空格间隔开。n");scanf("%d %d",&i,&j); else floyd();display(i,j); return 1; fflush(stdin);/*shortestdistance*/lo
30、ng int AMaxSize+1MaxSize+1; /*迪杰斯特拉算法*/long int DMaxSize+1;long int SMaxSize+1,PMaxSize+1;int source,sink;int step = 1;int top = -1; int StackMaxSize+1; void input() int i,j;printf("n请输入起始节点:"); scanf("%d",&source); printf("n请输入结束节点:"); scanf("%d",&sin
31、k); for ( i = 1; i <= N; i+ ) Si = NOTVISITED; Di = MGr.lengthsourcei; Pi = source; Ssource = VISITED; Dsource = 0;void Push(int value) if ( top >= MaxSize ) printf("没有路径存在!n"); exit(1); else Stack+top = value;int Pop() if ( top < 0 ) printf("没有路径存在!n"); exit(1); return
32、Stacktop-;int minD() int i,t=0; long int minimum = Infinite; for ( i=1;i<=N;i+ ) if ( (Si = NOTVISITED) && Di < minimum ) minimum = Di; t = i; return t;void output_path() int node = sink; if ( (sink = source) | (Dsink = Infinite) ) printf("n节点%d与节点%d之间没有路径存在!",source,sink); r
33、eturn; printf("n"); while ( node != source ) Push(node); node = Pnode; printf("V%d到V%d的最短路径为:n",source,sink); printf(" V%d",source); while( node != sink) node = Pop(); printf(" -%ld->",MGr.length Pnode node); printf("V%d",node); printf("n&quo
34、t;); printf("n %d->%d的最短路径是: %ldn",source,sink,Dsink); printf("n");void distance() int t,I; input(); for ( step =2;step <=N; step+ ) t = minD(); St = VISITED; for ( I=1; I <= N; I+ ) if ( (SI = NOTVISITED) && (Dt+MGr.lengthtI <= DI) ) DI = Dt + MGr.lengthtI; P
35、I = t; output_path(); void map() printf("n");printf("FDK's 手办 n");printf(" 10 n");printf(" n");printf(" 学n");printf(" 文 生n");printf(" 体育场 体 公n");printf(" 中 餐厅 寓n");printf(" 心 n");printf(" n");prin
36、tf(" 怡 n");printf(" 海 n");printf(" 湖 n");printf(" 篮球场 畔 n");printf(" 流体实验室 机n");printf("11械n");printf(" 12 基n");printf(" 怡 情 园 地n");printf(" n");printf(" n");printf(" n");printf(" n");printf(" 图n");printf(" 工 教14 书n");printf(" 大13学 中 心 大 道 馆n");printf(" 高 楼 n");pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国未漂白面粉行业销售状况与竞争前景预测报告
- 2024-2030年中国替代蛋白质市场营销动态与投资盈利预测报告
- 2024-2030年中国无花果行业市场营销模式及投资盈利预测报告
- 2024-2030年中国改性塑料原料产业发展状况及投资可行性研究报告
- 2024-2030年中国接骨木花饮料市场销售动态与营销前景预测报告
- 2024-2030年中国技工学校项目可行性研究报告
- 2024-2030年中国户外背包行业市场竞争趋势及发展商机分析报告权威版
- 2024-2030年中国微电影行业竞争力策略及投资经营模式分析报告版
- 2024-2030年中国形状记忆合金行业发展现状及投资规模分析报告
- 2024-2030年中国建筑安装行业发展规划及投资模式研究报告
- 幼儿园可行性研究报告范文(8篇)
- 围手术期血糖管理指南
- 糖尿病药物治疗
- 部队心理健康与预防
- 人力资源管理百年:演变与发展
- 材料成型工艺pdf
- 胃溃疡伴出血的护理查房
- 邮政行测题库2024
- 《纪念白求恩》专题探究课件(叙议结合理思路)
- 腹腔镜手术操作技巧
- 品牌矿泉水物质表
评论
0/150
提交评论