问题出在最后一行 G.arcs[i][j]=INFINITY 就报错,我不知道该怎么改。
#include <stdio.h>
#define INFINITY 2147483647 //最大值∞
#define MAX_VERTEX_NUM 20 //最大顶点数
//图的种类
typedef enum{
DG,DN,UDG,UDN //有向图,有向网,无向图,无向网
}GraphKind;
//弧的定义
typedef struct Arc{
int arcvalue; //弧值
//这里可加 *info表示弧的其它信息
}Arc,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//图的结构
typedef struct MGraph{
int vexs[MAX_VERTEX_NUM]; //顶点值
AdjMatrix arcs; //邻接矩阵
int vexnum,arcnum; //图当前的顶点数和弧数
GraphKind kind; //图的种类标志
}MGraph;
//建立图的邻接表,邻接矩阵
void CreateUDG(MGraph &G);
//构造邻接矩阵
void CreateGraph(MGraph &G)
{
scanf("%s",&G.kind); //输入图的种类
switch(G.kind){
case UDG:CreateUDG(G);
default:printf("输入错误,请输入(DG,DN,UDG,UDN)");
}
}
//构造无向图
void CreateUDG(MGraph &G)
{
int i,j;
scanf("%d %d",&G.vexnum,&G.arcnum); //这里可以加个&IncInfo来表示弧有没有其它信息(0或1)
for(i=0;i<G.vexnum;i++)
scanf("%d",&G.vexs[i]); //构造顶点向量;
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
G.arcs[i][j]=INFINITY;
}