这是克鲁斯卡尔算法的前一部分,是对结构体的定义和数据初始化,和具体算法内容无关,编译总是出错,如下图
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAXVER 6 4 //定义图的数据结构 5 struct Graph 6 { 7 int arc[MAXVER][MAXVER];//邻接矩阵 8 int ver[MAXVER];//顶点集 9 int numVertexes;//图的顶点总数,边数 10 int numEdeges; 11 }; 12 //定义边的数据结构 13 struct Edge 14 { 15 int begin; 16 int end; 17 int weight;//边长 18 }; 19 void main() 20 { 21 struct Edge temp; 22 23 24 //创建图,并初始化 25 struct Graph *myGraph=(struct Graph*)malloc(sizeof(struct Graph)); 26 //创建并初始化线性表a 27 struct Edge a[10]={{1,2,6},{1,3,1},{1,4,5},{2,3,5},{2,5,3},{3,4,5},{3,5,6},{3,6,4},{4,6,2},{5,6,6}}; 28 struct Edge b[10]; 29 myGraph->ver[MAXVER]={0,0,0,0,0,0}; 30 //初始化邻接矩阵 31 myGraph->arc[MAXVER][MAXVER]={{0,6,1,5,0,0},{6,0,5,0,3,0},{1,5,0,5,6,4},{5,0,5,0,0,2},{0,3,6,0,0,6},{0,0,4,2,6,0}; 32 //初始化顶点数,边数 33 myGraph->numVertexes = 6; 34 myGraph->numEdeges = 10; 35 }
04.c(29) : error C2059: syntax error : '{'
04.c(31) : error C2059: syntax error : '{'
这是为什么,,求高手指教。
换了一种写法,把数组元素分开赋值了,编译通过,不过原因不明。
因为数组赋值你的这个写法是初始化定义时在才能这样写的 int a[3] = {1,2,3}这样才可以
29 行改为:myGraph->ver[MAXVER]={{0,0,0,0,0,0}};
;
31 行后面少了一个 }
。
改了,还是不行
数组除了初始化不能这样赋值的,你要给这个数组赋值就得循环一个个赋值了。