Dijkstra算法,其中出现一个小问题,哪位大神帮帮忙!!!
传到这个函数的变量为Dijkstra( &g_graph,2) ;貌似是dist[]这个数组有问题 附件为Dijkstra算法的完整工程
Dijkstra.zip
(10.28 KB)
void Dijkstra( ALGraph* aGraph,int v)/*aGraph为已知无向图,,v为路径的起始结点*/
{
int dist[6] ,path[ 6] ;
int s[ 6] ;
int mindis,i,j,u;
for( i=0;i<aGraph->n;i++)
{
dist[i] =INF;/*对dist数组进行初始化*/
s[i] =0;/*对s数组进行初始化*/
path[ i]=-1;/*对path数组进行初始化*/
}
EdgeNode* temEdge=aGraph->adjlist[v].firstarc;
while( temEdge!=NULL)
{
dist[ temEdge->adjvex] =temEdge->info;
path[ temEdge->adjvex] =v;
temEdge=temEdge->nextrarc;
}
s[v] =1;path[v]=v;dist[v] =0;
for( i=0;i<aGraph->n;i++)
{
mindis=INF;/*mindis的初始化*/
for( j=0;j<aGraph->n;j++)
{
if( s[ j] ==0&&dist[ j] <mindis)
{
u=j;
mindis=dist[ j] ;
}
s[u]=1;
for( j=0;j<aGraph->n;j++)
{
if(s[j]==0)
{
EdgeNode* temEdge=
isEdge( &(aGraph->adjlist[u]),&( aGraph->adjlist[j]));
if( temEdge!=NULL)
{
if((dist[u] +temEdge->info)<dist[j])
{
dist[j] =dist[u] +temEdge->info;
path[j] =u;
}
}
}
}
}
}
Dispath( dist,path,s,aGraph,v);
}
[ 本帖最后由 犿蚂 于 2013-6-18 21:02 编辑 ]