资源描述:
《《数据结构课程设计》校园景点游览实习报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据结构》课程设计报告课程名称:课程设计题目:姓名:院系:专业:年级:学号:指导教师:《数据结构》课程设计校园导游咨询计算机学院计算机科学与技术2009级09051106赵葆华2011年5月27日一、需求设计该次实习要求是设计一张地图,里面有n个景点,告诉我们景点之间的连接信息,要设计一个校园导游程序,为来访的游客提供各种信息的查询服务。主要为两个服务。(1)为来访游客提供图中任意景点相关额信息查询。(2)为游客提供图中任意两景点间的最短路径的长度,并输出该条路径为实现这两个服务我们需要用一个数据结构
2、存储这个地图的情况,还有就是用dijkstra算法去求两点间的最短路,并需要一个数组去记录该最短路径。二、概要设计1•地图和风景点的数据结构l).typedefstructArcCell{intadj;//相连接的两个风景间的距离}ArcCell,AdjMatrix[100][100];//记录每两个景点间的距离的数组2)typedefstruct{charscename[30];//风景名称intscenum;//风景代号charsceintro[200];//风景简介}Scenery;//景点的数据
3、结构3)typedefstruct{Sceneryvexs[100];//景点数组,每个景点对应一个该数组下标AdjMatrixarcs;intvexnum,arcnum;//地图中点的景点的个数和路的条数}MGraph;//地图的用图的数组表示法记录2.一些用到的比较重要的变量intPath[100];//记录最短路径intD[100];〃记录节点到起始节点的记录boolfinal[100];〃标记该节点是否在路径上3.CreatMGraph(MGraph&G)初始条件:地图G所需的空间已存在操作结果
4、:初始化地图,输入景点的个数,输入每个风景点的信息,输入图中路的条数,和每条路的起始景点和终止景点及该路的长度。4・GetSce(charseename[],MGraphG)初始条件:地图G已存在,和已知的一个景点名操作结果:由风景名称返回该风景在G.vex[]风景数组屮的下标5.ShortestPath_DIJ(MGraphG,intsn,inten)初始条件:图G存在,已经初始化,已知起点sn,终点en操作结果:用dijkstra算法求两个景点间的最短距离,并记录下该路径6.ShortestPath
5、_DIJ(MGraphG,intsn,inten)初始条件:
6、
7、g存在,已经初始化,已知起点sn,终点en,保存路径的数组Path[]已存了最短路径操作结果:若起始景点和终止景点间存在最短路,输出这条最短路,及最短路上风景的信息。三、详细设计1.初始化地图voidCreatMGraph(MGraph&G){inti,j;intdis,nl,n2;charnamel[30],name2[30];printf("请输入景点的个数:");scanf(,,%d',,&G.vexnum);printf(n请输入地
8、图上路的条数”);scanf("%d",&G.arcnum);printf("请输入每个景点的信息(风景名称,代号,简介).H);for(i=l;i<=G.vexnum;i++){printf("M%d个景点(风景名称,代号,简介):“』;seanf("%s",G.vexs[i].scename);scanf(H%d",&G.vexs[i].scenum);scanf("%sH,G.vexs[i].sceintro);}printf("请输入景点之间的路且路的长度:");for(i=l;
9、i<=G.vexnum;i++){for(j=l;j<=G.vexnum;j++){G.arcs[i][j].adj=MAX;}}for(i=l;i<=G.arcnum;i++){printf(H请输入起始某条路的起始和终止景点的名称,及该条路的长度:”);scanf("%s",namel);scanf("%s",name2);nl=GetSce(namel,G);n2=GetSce(name2,G);scanf("%d",&dis);G.arcs[nl][n2).adj=dis;G.arcs[n2][
10、nl].adj=dis;}printfC'Xn");}1.intGetSce(charseename[],MGraphG){inti;for(i=l;i<=G.vexnum;i++)if(strcmp(scename,G.vexs[i].scename)==O)returni;return-1;}返回景点名在图G的风景数组vex[]中的下标,如果没找到则返回J表示地图中不存在该节点输入错误2.主要算法,用dijkstra算法求两个景点间的最