课程设计旅游管理系统!C语言图结构带你轻松完成作业
问题描述:
创建一个至少有15个点的有向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:"天地广场门","十八盘","冯玉祥墓","桃花峪门","中天门","南天门","玉皇顶"等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。 1.基本要求
(1)创建图的存储结构。
(2)输入两个景点名,就可以得到从一个景点到达另一个景点的所有简单路径、相应路径的路程公里数、行走的方法(每一段是步行,还是坐索道);
(3)输入两个景点名,就可以得到其最短路径,即:路程最短的行进方法;如果两者无路径可通,就得出"两景点不可达的信息"。 2.重点、难点
重点:
(1)通过实验掌握图状结构数据的存储与表式;
(2)通过实验掌握对图的存储、遍历、运算等各种操作;
(3)深入理解图的特征及应用;
难点:
(1)任意两个景点所有路径的计算;
(2)最短路径的计算与算法设计。
代码示例:#include #include #include #include #define N 15 #define MAX 999 int min_len[N]; int route[N][N]; int visited[N]; int flag[N]; int stack[N]; int path[N][N]; int temp[N][N]; int start=99,end=99; int v,w,m=1; int static n=0; typedef struct { char name[N][20]; int length[N][N]; char way[N][N]; }Point; void init_path() { int i,k; for(i=0;iname[i]); fclose(fp1); for(i=0;ilength[i][j]); temp[i][j]=info->length[i][j]; } } fclose(fp2); for(i=0;iway[i][j]); } fclose(fp3); } void output_view(Point *info) { int i,j; printf("一共有%d个景点,关系如下: ",N); for(i=0;iname[i]); printf(" "); for(i=0;iname[i]); if(j!=N)printf("%4d(%c)",info->length[i][j],info->way[i][j]); else printf(" "); } } void Dijkstra(Point *info) { int i=1,j,min; for(v=0;vlength[start][v]; for(w=0;wlength[v][w]length[v][w]; route[w][w]=1; } } } } void DFS(Point *info,int p) { int i,j,len; visited[p]=1; for(i=0;ilength[p][i]!=MAX) { if(i==end) { n++;printf("第%d条: ",n); for(j=0;j",stack[j]+1,info->name[stack[j]],info->way[stack[j]][stack[j+1]]); printf("(%s)---%c--->",info->name[stack[j]],info->way[stack[j]][stack[j+1]]); } //printf("%d(%s) ",end+1,info->name[end]); printf("(%s) ",info->name[end]); } else if(!visited[i]) { info->length[p][i]=MAX; visited[i]=1; stack[m]=i; m++; DFS(info,i); info->length[p][i]=temp[p][i]; visited[i]=0; m--; } } } } void receive(Point *info) { int i; char a[20],b[20]; printf(" 输入起点和终点标号,按# #退出:");scanf("%s%s",a,b); printf("得出所有简单路径和最短路径 "); if(strcmp(a,"#")==0&&strcmp(b,"#")==0)return; for(i=0;iname[i])==0)start=i; if(strcmp(b,info->name[i])==0)end=i; } init_path(); //for(i=0;iname[start],info->name[end],min_len[end]); for(i=0;iname[start],info->name[end],min_len[end]); printf("最短路径为: "); for(i=0;i",path[end][i]+1,info->name[path[end][i]],info->way[path[end][i]][path[end][i+1]]); printf("(%s)---%c--->",info->name[path[end][i]],info->way[path[end][i]][path[end][i+1]]); } //printf("%d(%s) ",path[end][i]+1,info->name[path[end][i]]); printf("(%s) ",info->name[path[end][i]]); } else {printf(" 非常抱歉!!!景点%s无法到达%s",info->name[start],info->name[end]);} printf(" "); } start=end=99;n=0; } int main() { int i,j=0; char x; Point *view_info=NULL; view_info=(Point *)malloc(sizeof(Point)); read_file(view_info); msgbox(view_info); printf("输入操作:"); while(scanf("%c",&x)!=EOF) { switch(x) { case "S":msgbox(view_info);receive(view_info);printf("输入操作:");break; case "E":exit(0); default :cur_sys();msgbox(view_info);printf("输入操作:");continue; } } printf("谢谢使用!!!"); }
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦! 可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
促别大意轮胎缺气究竟有多危险对汽车来说,大家公认发动机很重要,其实轮胎也很重要。就好像要走万里路的人必须注意足部的保养,穿合脚的鞋。若是在路上发生爆胎等轮胎故障是十分危险的。今天就跟大家聊聊轮胎那些事儿。胎压
促恐怕这几个功能连老司机都没用过!现在买车的人越来越多了,我们身边大部分朋友也都购买了汽车,那买车的多了,去考取驾照的人也多了,很多人在考取驾照之后,正常的开车是没有问题的,但是对汽车上的一些功能或者是配置都是不了
促长时间不使用车辆需要注意什么其实有许多车主自购买汽车后并非每天都会开车,有时候因工作出差或者其他特殊情况,导致车辆停放较长一段时间不用,等到一用车的时候启动发动机就会发现各种问题或无法启动,终只能送去检修了。
促打方向盘还在数圈吗教你几个的方法很多新手不熟悉方向,开车打方向盘时都是数着圈数打,这样既不安全也很麻烦。其实我认为打方向盘可以分为两种情况,行驶中打方向和原地打方向。而这两种情况下判断方向打多少貌似并不需要看圈数
促你的爱车还在安装方向盘套吗很多开车的朋友都遇到过相同的问题,冬天的早晨进入到车里,在暖风没来之前可以说是一种煎熬。这也就是为何衍生出种类众多冬季车内用品的原因,比如说毛绒座套各种材质的方向盘套等等,今天我们
促恐怕这几个功能连老司机都没用过现在买车的人越来越多了,我们身边大部分朋友也都购买了汽车,那买车的多了,去考取驾照的人也多了,很多人在考取驾照之后,正常的开车是没有问题的,但是对汽车上的一些功能或者是配置都是不了
促老司机为什么一直强调要在4S店续保!相信我们身边总有几个认识的保险朋友,经常会听到这样的对话你的车险在哪买的,到期在我这买吧,划算又放心些之前买车顺便在4S店就买了,之前不太了解,4S店人说什么我也就相信了啊4S店卖
促空调开启为什么会有霉味炎炎夏日如火烧,博越车主都别怕哈,GoGoGo赶紧上车开空调走,但是有些车主却发现空调开启有霉味?这是为什么呢?问空调开启为什么会有霉味?答空调长时间不用或空调滤芯长时间未更换,空
促跟着大车误闯红灯真的会被免罚么交警是怎样判定闯红灯违法的?一般来讲,认定一台车有没有闯红灯至少要有三张照片,它们分别是前轮越过停止线,后轮越过停止线以及超过对面的那个停止线,大部分情况下只要这三张照片齐全,交警
促不同标号的汽油到底能不能混加呢温馨提示汽油标号要求在油箱盖内侧贴有标识说明请使用RON92号及以上级别无铅汽油不同标号的汽油到底能不能混加?加错了有什么影响如何补救?汽油尽量还是不要混加汽油混加其实对汽车本身不
促自动挡车的禁忌驾驶自动挡汽车有一些问题和技巧,是需要注意一下的。下面小编给大家说道说道。1hrD挡走天下我们的自动档档位主要有PRNDM。许多车主会挂上D档一路走到底,这样的话会增加车辆的耗油量
重庆小面之旅第八十四站第八十四站5味风面酸甜苦辣咸,人间五味。你最爱哪一味?五味俱全,五味杂陈,人间来一回,五味都得品。重庆做的好的小面,一般都是开半天,而且是上午半天,这样老板有多余的时间准备第二天的
重庆小面之旅第七十七站第七十七站吹得神碗杂面此吹得神,非彼吹得神有很多相似的地方,也有一些不解的缘因为松树桥那家名店没有吃过所以只对此店说说当时的感受怀旧小面,怀旧碗杂面,无敌牛肉面,超级吹得神。这些名
重庆小面之旅第七十四站第七十四站152车站面152车站面,原152车站旁的街边小面,颇具历史,因味道巴适,街坊邻居过往行人,驻足停留,生意红火。不过,此152非彼152,老板是跟前老板妹妹学习而之,不知
重庆小面之旅第八十站第八十站八宝辣子鸡面庄在324医院旁,有几家火爆的重庆小面。被炒作为重庆小面中爱马仕的本地麻辣小面,号称江北陈冠希的大叔面,还有这家隐藏在桥下小巷子的八宝辣子鸡特色面庄。重庆有名的
重庆小面之旅第八十二站第八十二站原152车站面这一天,等了好久等着灵魂归位等着她的回归152车站面的灵魂女将你应该重出江湖了原152车站面是她吗希望是她不是她?从东方灯饰广场下车,沿着坡坡爬上去,左拐右
重庆小面之旅第八十五站第八十五站凯喜牛肉面我和凯喜见面已经数月有余,听闻他呕心沥血,钻研味道,面条已经小有所成,于是我再次走近凯喜。凯喜给我做了一碗他的新品,干溜牛肉面,手工切制的优质牛肉,颗粒分明,肉
重庆小面之旅第九十三站第九十三站五斗米手工面五斗米餐饮集团,旗下有顺水鱼馆守柴炉烤鸭庖丁家五斗米大酒楼,这样的大佬,也对小面感兴趣,做起了手工面。说明小面确实有它的魅力,它是亲民的廉价的包容的。五斗米的
重庆小面之旅第八十六站第八十六站老虎面重庆小面有很多夫妻店,例如渝中胡家面本地麻辣小面八宝辣鸡面庄二哥碗杂面也有很多兄弟姐妹店,例如七村姐妹店林传宝面馆还有一些光棍店,比如胡家魔面桥下面钟先生荞麦面,特
重庆小面之旅第八十七站第八十七站张秀面馆临近岁末,重庆的天气越来越冷。2020年即将过去,这个特别的年份,让全人类都承受了巨大的伤痛,很多人的人生观都发生了改变。从有钱真好,到开心就好,到活着就好。国外
重庆小面之旅第152站第152站储奇门眼镜面此眼镜,非彼眼镜。此眼镜在解放东路,彼眼镜在解放西路。彼眼镜傲娇,此眼镜也傲娇。彼眼镜傲娇是恃才傲物,此眼镜傲娇是狂妄自大。清晨,此眼镜就在手工制作青花椒面,
重庆小面之旅第149站第149站微晓面微晓面的味道是重庆街头最普通的一碗。辣椒略带香味,辣味不太突出,麻味不太够味,回味没有彩蛋。所谓的招牌微晓面,就是加上所有的浇头,牛肉肥肠猪蹄都有,味道上只是说增加