k=i;
}
}
returnk;
}
voidMiniSpanTree_PRIM(Graphg,chara[10])
{
structtreeclosedge[M];
inti,j,k,money=0;
k=locatevex(&g,a);
if(k==-1)
{
printf("没有%s这个辖区,无法求解\n",a);
return0;
}
for(i=0;i{
if(i!
=k)
{
closedge[i].lowcost=g.R[k][i];
closedge[i].weizhi=k;
}
}
closedge[k].lowcost=0;
for(i=1;i{
k=minimun(closedge,g);
money+=closedge[k].lowcost;
printf("%d:
%s%s%d\n",i,g.V[closedge[k].weizhi],g.V[k],closedge[k].lowcost);
closedge[k].lowcost=0;
for(j=0;j{
if(g.R[k][j]{
closedge[j].weizhi=k;
closedge[j].lowcost=g.R[k][j];
}
}
}
printf("总费用为:
%d\n",money);
}
voidmain()
{
inti,k;
Graphg;
chara[10];
printf("请选择功能:
1(铁路建设)0(退出)\n");
scanf("%d",&k);
while(k)
{
i=creatgraph(&g);
if(i)
{
printf("请输入从哪里开始:
");
scanf("%s",a);
MiniSpanTree_PRIM(g,a);
}
printf("请选择功能:
1(铁路建设)0(退出)\n");
scanf("%d",&k);
}
}
5总结与展望
本程序,本次编译涉及数据结构最小生成树以及图的构造等编译。
先要构造结构体,在定义时应要注意尽量将赋值空间增大,以防止调试时输入数据超出运算范围。
再进行函数的编译调用,构造无向图用邻接矩阵进行存储,这些编译代码,书上都有介绍,但不可尽抄,书上的只是一个模板,根据程序设计任务将变量进行修改,构造图之后,运用最小生成树原理,用普利姆算法对整个程序变量进行编译,最后进入主函数,就直接调用函数进行运算输入的数据,输出运算结果。
这次程序的编译让我对图的遍历理解的更加深入,最小生成树问题不仅可以运算本次程序对地铁建造最少费用问题,更可以运用于一系列的最短距离等问题,解决甚多复杂问题!
极其具有实用性!
参考文献
[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:
北京希望电子出版社,2005
[2]白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4):
100~130.
[3]严蔚敏.吴伟民编著,数据结构。
—北京:
清华大学出版社,2007
[4]姚诗斌.数据库系统基础。
计算机工程与应用,1981年第8期
成绩评定
成绩教师签字