数据结构程序设计医院选址问题.docx
《数据结构程序设计医院选址问题.docx》由会员分享,可在线阅读,更多相关《数据结构程序设计医院选址问题.docx(7页珍藏版)》请在冰豆网上搜索。
数据结构程序设计医院选址问题
数据结构-程序设计--医院选址问题
学号
数据结构课程设计
设计说明书
问题
医院选址问题
起止日期:
2011年12月12日至2011年12月16日
学生姓名
班级
成绩
指导教师(签字)
电子与信息工程系
2011年12月16日
四、参考文献
1.王红梅.数据结构.清华大学出版社
2.王红梅.数据结构学习辅导与实验指导.清华大学出版社
一.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社
一、需求分析
输入村庄的个数、名称,输入村庄间路的个数以及每条路的长度(权值);
程序根据权值以及路来求解得出医院的地址。
医院的地址要求:
每个村庄到医院的路径最长的值要最小。
二、问题求解
在现实中我会以其中为终点以同样的速度在每个村庄走到终点的时间记录下最长的时间为该点为终点时的一个值。
难后比较那个点为终点时所用的时间值是最小的。
abcde
a1357
b246
c324
d137
e685
三、总体设计
四、详细设计
输入函数:
Hospital:
:
Hospital(Ta[],intn,inte)
{
vertexNum=n;arcNum=e;
inti,j,k,value;
for(i=0;i{
adjlist[i].vertex=a[i];
adjlist[i].firstedge=NULL;
}
for(k=0;k{
cout<<"输入边所依附的两个顶点的序号"<cin>>i>>j;
cout<<"输入边的权值"<cin>>value;
ArcNode*s=newArcNode;
s->adjvex=j;
s->info=value;
s->next=adjlist[i].firstedge;
adjlist[i].firstedge=s;
计算最短路径:
//求最短路径的长度
for(i=0;i{
for(j=0;jfor(k=0;k{
if(value[i][j]>0)
{
if(value[i][k]+value[k][j]0&&value[k][j]>0)
value[i][j]=value[i][k]+value[k][j];
}
else
{
if(value[i][k]>0&&value[k][j]>0)
value[i][j]=value[i][k]+value[k][j];
}
}
}
求偏心度:
//对最短路径长度矩阵的每列求大值,即得到各顶点的偏心度
for(j=0;j{
for(i=0;i{
if(sum=9999)
sum=value[i][j];
}
p[j]=sum;
sum=0;
}
输出函数:
cout<<"医院地址应该选在:
"<五、调试与测试
在测试中权值的初始话以及最短路径的计算时出现没赋值、赋值出错等问题。
if(value[i][j]>0)来确定是否用k的中间值来求解求解最短路径。
六、关键源程序清单和执行结果
测试所用数据:
stringcountryname[5]={"a","b","c","d","e"};
intcountrynum=5,road=7;