这个算法是什么意思?
void Floyd(SGuide *G)//所有路径的函数{
int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];//通过以下循环得到起始点到其它地点的路径和距离
for(v=0;v <G->vexnum;v++)
for(w=0;w <G->vexnum;w++)
{
D[v][w]=G->arcs[v][w].way;
for(u=0;u <G->vexnum;u++)
p[v][w][u]=0;
if(D[v][w] <DERCTION)
{
p[v][w][v]=1;p[v][w][w]=1;
}
}
for(u=0;u <G->vexnum;u++)
for(v=0;v <G->vexnum;v++)
for(w=0;w <G->vexnum;w++)
if(D[v][u]+D[u][w] <D[v][w])
{
D[v][w]=D[v][u]+D[u][w];
for(i=0;i <G->vexnum;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
}
while(flag)
{
printf("请输入出发点和目的地的编号:");
scanf("%d%d",&k,&j);
if(k <0||k>G->vexnum||j <0||j>G->vexnum)
{
printf("校区编号不存在!请重新输入出发点和目的地的编号:");
scanf("%d%d",&k,&j);
}
if(k>=0&&k <G->vexnum&&j>=0&&j <G->vexnum)
flag=0;
}
printf("%s",G->vexs[k].name);
for(u=0;u <G->vexnum;u++)
if(p[k][j][u]&&k!=u&&j!=u)
printf("-->%s",G->vexs[u].name);
printf("-->%s",G->vexs[j].name);
printf(" 总路线长%dm\n",D[k][j]);
}
void ShortPath(SGuide * G) //定义最短路径的算法函数
{
int v,w,i,min,t=0,x,flag=1,v0;
int final[20], D[20], p[20][20];
while(flag)
{
printf("请输入一个起始校区编号:");
scanf("%d",&v0);
if(v0 <0||v0>G->vexnum)
{
printf("校区编号不存在!请重新输入景点编号:");
scanf("%d",&v0);
}
if(v0>=0&&v0 <G->vexnum)
flag=0;
}
for(v=0;v<G->vexnum;v++)
{
final[v]=0;
D[v]=G->arcs[v0][v].way;
for(w=0;w <G->vexnum;w++)
p[v][w]=0;
if(D[v] <DERCTION)
{
p[v][v0]=1;p[v][v]=1;
}
}
D[v0]=0;final[v0]=1;
for(i=1;i <G->vexnum;i++)
{
min=DERCTION;
for(w=0;w <G->vexnum;w++)
if(!final[w])
if(D[w] <min){v=w;min=D[w];
}
final[v]=1;
for(w=0;w <G->vexnum;w++)
if(!final[w]&&(min+G->arcs[v][w].way <D[w]))
{
D[w]=min+G->arcs[v][w].way;
for(x=0;x <G->vexnum;x++)
p[w][x]=p[v][x];
p[w][w]=1;
}
}
for(v=0;v <G->vexnum;v++)
{
if(v0!=v) printf("%s",G->vexs[v0].name);
for(w=0;w <G->vexnum;w++)
{
if(p[v][w]&&w!=v0)
printf("-->%s",G->vexs[w].name);
t++;
}
if(t>G->vexnum-1&&v0!=v)
printf(" 总路线长%dKM\n\n",D[v]);
}
}
各位大虾帮我解释一下这两个算法是什么意思?
SGuide InGuide(void)//校区介绍,对各校区的简介
这个函数名和c语言中的函数名怎么不一样啊?解释一下。