数据结构旅游区导航图课程设计.docx

上传人:王** 文档编号:942014 上传时间:2024-03-01 格式:DOCX 页数:57 大小:449.64KB
下载 相关 举报
数据结构旅游区导航图课程设计.docx_第1页
第1页 / 共57页
数据结构旅游区导航图课程设计.docx_第2页
第2页 / 共57页
数据结构旅游区导航图课程设计.docx_第3页
第3页 / 共57页
数据结构旅游区导航图课程设计.docx_第4页
第4页 / 共57页
数据结构旅游区导航图课程设计.docx_第5页
第5页 / 共57页
数据结构旅游区导航图课程设计.docx_第6页
第6页 / 共57页
数据结构旅游区导航图课程设计.docx_第7页
第7页 / 共57页
数据结构旅游区导航图课程设计.docx_第8页
第8页 / 共57页
数据结构旅游区导航图课程设计.docx_第9页
第9页 / 共57页
数据结构旅游区导航图课程设计.docx_第10页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构旅游区导航图课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构旅游区导航图课程设计.docx(57页珍藏版)》请在优知文库上搜索。

1、数据结构旅游区导航图课程设计题目旅游区导游图专业计算机科学与技术班级(2)班学生向13旅游区导游图题目内容问题描述:设某个旅游区共有n个旅游景点(n10),每个旅游景点都与相邻的m个旅游景点(mN2,mvexnum=O;G-arcnum=O;/*初始化顶点数、边数*/return(G);ALGraph*Init_ALGraph()/*图的初始化*/ALGraph*G;G=(ALGraph)malIoc(sizeof(ALGraph);G-vexnum=O;G-arcnum=O;/*初始化顶点数*/return(G);图中顶点定位的函数,推断顶点是否重复输入了intLocateVex(MGrap

2、h*G,charvp)*图中顶点的定位,若图中有顶点vp,返回其在顶点数组的下标值*/for(k=0;kvexnum;if (G-vexsk=vp)return(k);往图中增加顶点的函数voidAddVertex(MGraph*G,charvp)结束/*往图的顶点数组中增加顶点*/intif(G-vexn三=MAXVEX)Printf(图中顶点数已达到最多!n);else(if(LocateVex(G,vp)=-1)(k=G-vexnum;G-vexsG-vexnum+=vp;for(j=0;jvexnum;j+)(G-adjjk=infinity;G-adjkj=infinity;*是带权

3、的有向图或者无向图*/往图的邻接矩阵中添加边(弧)voidAddArc(MGraph*G,ArcType*arc)/*往图的邻接矩阵中添加边(弧)/(intk=0,j=0;R=LocateVex(G,arc-vexl);J=LocateVex(G,arc-vex2);if(k=-lIIj=-l)Printf(边或者弧的顶点不存在,错误!n);elseG-arcnum+;G-adjkj=arc-ArcVal;G-adjjk=arc-ArcVal;/是无向图或者带权的无向图,需对称赋值/输出图的顶点矩阵与邻接矩阵voidoutput_graphic(MGraph*G)*输出图的顶点矩阵与邻接矩阵*

4、/(intk,j;Printf(图的顶点如下:);for(k=0;kvexnum;k+)printf(%4c”,G-vexsk);printfCnn*);Printf(图的邻接矩阵如下:n*);for(k=0;kvexnum;k+)for(j=0;jvexnum;j+)if(G-adjkj=INFINITY)以邻接矩阵作为图的存储结构建立图MGraph*create_graph()/*以邻接矩阵作为图的存储结构建立图*/(charinchar100,enchar100,fvex,Ivex;intcount=0;intweightMGraph*G;ArcType*arc;Printfc首先进行图

5、的初始化!nn);G=(MGraph*)malloc(sizeof(MGraph);G=Init_MGraph()arc=(ArcType*)malloc(sizeof(ArcType);printf(*n请以(顶点,顶点,权值)的形式输入图的边(或者弧),第一个顶点是?表示结束:n*);while(l)(scanf(*%s*,inchar);fvex=inchar0;/*输入第一个顶点,?结束*/if(fvex=三,?)break;elseAddVertex(G,fvex);scanf(*%s*,enchar);lvex=encharO;AddVertex(G,lvex);scanf(*%d

6、*,&weight);*输入第二个顶点与权值*/arc-vexl=fvexarc-vex2=lvex;arc-ArcVal=weight;AddArc(G,arc);printf(*n请继续输入下一条边(或者弧)!n);)return(G);将邻接矩阵g转换成邻接表GALGraph+MGraphToALGraph(MGraph*g,ALGraph*G)(inti,j,n=g-vexnum;11为顶点数ArcNode*p;G=(ALGraph*)malloc(sizeof(ALGraph);G-arcnum=g-arcnum;G-vexnum=g-vexnum;for(i=0;ivexnum;i

7、+)G-AdjListi.firstarc=NULL;for(i=O;i=0;j)if(g-adjij!=INFINITY)邻接矩阵的当前元素不为(P=(ArcNode*)malloc(sIzeof(ArcNode);创建一个结点*pG-AdjListj.data=g-vexsj;p-adjvex=g-vexsj;p-info=g-adjij;p-nextarc=G-AdjListi.firstarc;将*p链到链表后G-AdjListi.firstarc=p;returnG;邻接链表的输出voidoutput_graphic_c(MGraph*g,ALGraph*G)(inti;ArcNod

8、e*p;for(i=0;ivexnum;i+)(printf(%c”,G-AdjListi.data);p=G-AdjListi.firstarc;whiIe(p!=NULL)(printf(%s,-;printf(%c,%d)”,p-adjvex,p-info);p=p-nextarc;printfCnn*);相邻景点查询并输出voidoutput_Find_ALGraph(ALGraph*G)/*相邻景点查询并输出*/i11tj;ArcNode*p;PrintfC请输入你要查询的景点(下标值):n);scanf(*%d*,&j);p=G-AdjListj.firstarc;while(p)

9、(Printf(景点%c到景点%c的距离是%d(该两个景点之间有直接的道路相通)n”,G-AdjListj.data,p-adjvex,p-info);p=p-nextarc;景点路线查询:假设关于每个景点,设置有景点路线查询,要求能给出从该景点出发到任一其它景点的最短简单路径及距离。voidDijkstra_One(ALGraph*G,MGraph*g,intv,intdistance,intpre)/带权图G从顶点v到其他定点的最短距离distance与最短路径前驱结点的下标preintw;intS30,i,j,k,p,min;Printf(你所要开始查询的景点是:cn”,G-AdjListvO.data);for(i=0;ivexnum;i+)(distancei=g-adjvi;Si=0;if(distanceiINFINITY)prei=v;elseprei=-l;SvO=l;顶点v已加入到集合S中for(i=0;ivexnum;i+)(min=INFINITY;for(j=0;jvexnum;j+)(if(!Sj&distancejmin)min=distancej;k=j;Sk=l;/将找到的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!