软件学院课程设计报告书课程名称数据结构设计题目地铁建设问题专业班级学号姓名指导教师2014年1月17日目录1设计时间..........................................................................02设计目的..........................................................................03设计任务...........................................................................04设计内容..........................................................................04.1总体设计........................................................................04.2需求分析........................................................................14.3详细设计........................................................................24.4测试与分析.....................................................................44.4.1测试...........................................................................44.4.2分析...........................................................................54.5附录.............................................................................65总结与展望.....................................................................12参考文献............................................................................13成绩评定............................................................................141设计时间2014年1月15日2设计目的设计各辖区之间最短地铁,使修建费用最少3设计任务某城市要在各个辖区之间修建地铁,由于地铁建设费用昂贵,因此需要合理安排地铁建设线路,使市民可以沿地铁到达各个辖区,并使总费用最小。4设计内容(1)输入各个辖区名称和各辖区间直接距离(地铁铺设费用与距离成正比)。(2)根据辖区距离信息,计算出应该在哪些辖区建立地铁线路。(3)输出应该建设的地铁线路及所需建设总里程。4.1总体设计图4-1算法图4.2需求分析(1)本程序设计计算城市内各辖区间修建地铁的最短路程。(2)运行时,输入辖区的名称,各辖区之间用空格键隔开,以#输入结束。(3)输入各辖区间距离时,先输入两辖区名称,再输入距离。(4)最后计算最短距离来得出最少费用。4.3详细设计采用邻接矩阵存储构造无向图intcreatgraph(Graph*g){inti=0,j,m,k,p;chara[10],b[10];printf("请输入所有的辖区,以#为输入结束标志\n");scanf("%s",g->V[i]);while(strcmp("#",g->V[i])!=0){i++;scanf("%s",g->V[i]);}g->vexnum=i;for(i=0;ivexnum;i++)for(j=0;jvexnum;j++)g->R[i][j]=INFINITY;printf("请输入辖区和辖区之间的路程,以##为结束标志\n");scanf("%s%s%d",a,b,&m);while(strcmp("##",a)!=0||strcmp("##",b)!=0||m!=0){k=locatevex(g,a);p=locatevex(g,b);if(k==-1){printf("没有%s这个辖区\n",a);return0;}if(p==-1){printf("没有%s这个辖区\n",b);return0;}g->R[k][p]=g->R[p][k]=m;scanf("%s%s%d",a,b,&m);}return1;}普利姆算法生成最小树structtree//构造最小生成树//{intweizhi;intlowcost;};intminimun(structtree*a,Graphg){inti,k,m=0;for(i=0;i#include#include#include#defineINFINITY10000#defineM20typedefstruct{charV[M][10];intR[M][M];intvexnum;}Graph;intlocatevex(Graph*g,chara[10]){inti;for(i=0;ivexnum;i++){if(strcmp(a,g->V[i])==0)returni;}if(i==g->vexnum)return-1;}intcreatgraph(Graph*g){inti=0,j,m,k,p;ch...