关于用dijkstra算法 利用C语言计算最短路径出现的问题~
Dijkstra.obj:errorLNK2001:unresolvedexternalsymbol_dijkstraDebug/Dijkstra.exe:fataler...
Dijkstra.obj : error LNK2001: unresolved external symbol _dijkstraDebug/Dijkstra.exe : fatal error LNK1120: 1 unresolved externals
主程序如下
int main()
{
void Dijkstra(float Time[][maxnod],int nod_mun ,int v_origin,int v_destination );
int m,n;
printf("请输入您想要查询路径的起点序号(以回车确定): ");
scanf("%d",&m);
printf("请输入您想要查询路径的终点序号(以回车确定): ");
scanf("%d",&n);
while(m!=0&&n!=0)
{
if(m>0&&m<=maxnod&&n>0&&n<=maxnod)
{
dijkstra(Time,maxnod ,m,n);
printf("请输入您指定的起点序号(以回车确定): ");
scanf("%d",&m);
}
else
{
printf("\n您的输入错误,请重新输入!:");
scanf("%d",&m);
}
}
return 0;
}
void Dijkstra(float Time[][maxnod],int nod_mun ,int v_origin,int v_destination )
{
int U[maxnod],S[maxnod],i,j,k,min;
for(i=0;i<nod_mun;i++)
{
U[i]=1;
S[i]=0;
}
U[v_origin]=0;
S[v_origin]=1;
for(i=0;i<nod_mun;i++)
short_dis[i]=Time[v_origin][i];
for(i=0;i<nod_mun;i++)
{
min=nod_mun+10;
short_dis[min]=inf;
for(j=0;j<nod_mun;j++)
if(U[j]==1&&short_dis[j]<short_dis[min])
min=j;
S[min]=1;
U[min]=0;
for(j=1;j<nod_mun;j++)
if(U[j]=1&&short_dis[j]>short_dis[min]+Time[min][j])
{
short_dis[j]=short_dis[min]+Time[min][j];
pro_nod[j]=min;
}
}
printf("起点%d到终点%d的最短路径如下:\n\n",v_origin+1,v_destination+1);
if (i=v_destination&&S[i]==1)
{
k=i;
printf(" %d 到 %d 的最短路径为:",v_origin+1,i+1);
while(k!=v_origin)
{
printf("%d<-%d",k+1,v_origin+1);
}
printf(" \t最短路径长度为 : %4.1f\n\n",short_dis[i]);
}
else
printf("%d<-%d \t不存在路径\n",i+1,v_origin+1);
}
以上是主程序,变量已在前面进行了全局定义。。还有路径距离矩阵。
问题解决了,但程序设计出问题了。。。找不到最短路径。。。 展开
主程序如下
int main()
{
void Dijkstra(float Time[][maxnod],int nod_mun ,int v_origin,int v_destination );
int m,n;
printf("请输入您想要查询路径的起点序号(以回车确定): ");
scanf("%d",&m);
printf("请输入您想要查询路径的终点序号(以回车确定): ");
scanf("%d",&n);
while(m!=0&&n!=0)
{
if(m>0&&m<=maxnod&&n>0&&n<=maxnod)
{
dijkstra(Time,maxnod ,m,n);
printf("请输入您指定的起点序号(以回车确定): ");
scanf("%d",&m);
}
else
{
printf("\n您的输入错误,请重新输入!:");
scanf("%d",&m);
}
}
return 0;
}
void Dijkstra(float Time[][maxnod],int nod_mun ,int v_origin,int v_destination )
{
int U[maxnod],S[maxnod],i,j,k,min;
for(i=0;i<nod_mun;i++)
{
U[i]=1;
S[i]=0;
}
U[v_origin]=0;
S[v_origin]=1;
for(i=0;i<nod_mun;i++)
short_dis[i]=Time[v_origin][i];
for(i=0;i<nod_mun;i++)
{
min=nod_mun+10;
short_dis[min]=inf;
for(j=0;j<nod_mun;j++)
if(U[j]==1&&short_dis[j]<short_dis[min])
min=j;
S[min]=1;
U[min]=0;
for(j=1;j<nod_mun;j++)
if(U[j]=1&&short_dis[j]>short_dis[min]+Time[min][j])
{
short_dis[j]=short_dis[min]+Time[min][j];
pro_nod[j]=min;
}
}
printf("起点%d到终点%d的最短路径如下:\n\n",v_origin+1,v_destination+1);
if (i=v_destination&&S[i]==1)
{
k=i;
printf(" %d 到 %d 的最短路径为:",v_origin+1,i+1);
while(k!=v_origin)
{
printf("%d<-%d",k+1,v_origin+1);
}
printf(" \t最短路径长度为 : %4.1f\n\n",short_dis[i]);
}
else
printf("%d<-%d \t不存在路径\n",i+1,v_origin+1);
}
以上是主程序,变量已在前面进行了全局定义。。还有路径距离矩阵。
问题解决了,但程序设计出问题了。。。找不到最短路径。。。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询