求大神解决

zhfly1992 2011-12-08 11:19:53
本人菜鸟一只,请教大神这该怎么解决,要交一个地杰特斯拉算法
#include<stdio.h>
#define max 1000
#define num 6
typedef struct Mgraph
{
int vexs[num];
int arcs[num][num];
};

void Dijkstra(Mgraph Gn ,int v0,int path[],int dist[])/*求有向网Gn中v0到其余顶点的最短路径*/
{
int s[num];/*用来记录已经找到了最短路径的顶点*/
int i;
for(i=0;i<num;i++)
{
s[i]=0;
dist[i]=Gn.arcs[v0][i];
if(dist[i]&&dist[i]<max)
path[i]=0;
else
path[i]=-1;
}/*初始化*/
s[v0]=1;/*将v0记录入s*/
int m;
for(m=1;m<num;m++)
{
int min=max;
int v=-1;
int w;
for(w=0;w<num;w++)
{
if(!s[w]&&dist[w]<min)
{
v=w;
min=dist[w];
}

}
if(v==-1)break;
s[v]=1;
int j;
for(j=1;j<num;j++)
{
if(!s[j]&&(min+Gn.arcs[v][j]<dist[j]))
{
dist[j]=min+Gn.arcs[v][j];
path[j]=v;
}
}
}
}

int main()
{
Mgraph Gn;
Gn.arcs={{0,max,10,max,30,100},
{max,0,5,max,max,max},
{max,max,0,50,max,},
{max,max,max,0,max,10},
{max,max,max,20,0,60},
{max,max,max,max,max,0}};
int i;
for(i=0;i<num;i++)
Gn.vexs[i]=i;
int path[num];
int dist[num];
int v0;/*起点*/
printf("请输入起点位置(小于%d):\n",num);
scanf("%d",&v0);
Dijkstra(Gn,v0,path,dist);
for(i=0;i<num;i++)
{
if(dist[i]==max)
{
printf("从节点%d到节点%d不可达\n",v0,i);
}
else
{
printf("从节点%d到节点%d的最短路径长度为%d\n",v0,i,dist[i]);
}
}
}
最后报错,cpp:56: error: expected primary-expression before '{' token
cpp:56: error: expected `;' before '{' token

56行为 Gn.arcs={{0,max,10,max,30,100},
{max,0,5,max,max,max},
{max,max,0,50,max,},
{max,max,max,0,max,10},
{max,max,max,20,0,60},
{max,max,max,max,max,0}};
求救,为什么会出现这种问题
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-12-08
  • 打赏
  • 举报
回复
typedef语法错误。
‘变量初始化’和‘变量赋值’不是一回事!
#define max 1000
#define num 6
typedef struct MGRAPH {
int vexs[num];
int arcs[num][num];
} Mgraph;
Mgraph Gn={
{0,0,0,0,0,0},//vexs[6]
{//arcs[6][6]
{0 ,max, 10,max, 30,100},
{max, 0, 5,max,max,max},
{max,max, 0, 50,max, 0},
{max,max,max, 0,max, 10},
{max,max,max, 20, 0, 60},
{max,max,max,max,max, 0},
},
};
zhfly1992 2011-12-08
  • 打赏
  • 举报
回复
求解啊

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧