问题遇到的现象和发生背景
本人在写无向图搜索的代码时遇到的问题
问题相关代码,请勿粘贴截图
#define MAX_VERTEX_NUMBER 20
#define FALSE 0
#define TRUE 1
#define INFINITY INT_MAX
typedef struct ArcCell
{
int adj;
int* info;
}ArcCell,AdjMatrix[MAX_VERTEX_NUMBER][MAX_VERTEX_NUMBER];
typedef struct
{
int vexs[MAX_VERTEX_NUMBER];
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph;
```void CreateMGraph(MGraph* G)
{
if (G == NULL) exit(0);
G->vexnum = 13;
G->arcnum = 18;
#if 0
for (int i = 0; i < MAX_VERTEX_NUMBER; i++)
{
for (int j = 0; j < MAX_VERTEX_NUMBER; i++)
{
G->arcs[i][j].adj = INFINITY;
G->arcs[i][j].info = NULL;
}
}
#endif
G->arcs[1][0].adj = 18; G->arcs[2][1].adj = 19; G->arcs[3][2].adj = 23;
G->arcs[4][3].adj = 15; G->arcs[5][4].adj = 21; G->arcs[6][5].adj = 30;
G->arcs[7][4].adj = 8; G->arcs[7][6].adj = 14; G->arcs[8][6].adj = 20;
G->arcs[9][1].adj = 27; G->arcs[9][3].adj = 4; G->arcs[10][3].adj = 4;
G->arcs[10][6].adj = 21; G->arcs[10][8].adj = 43; G->arcs[11][0].adj = 22;
G->arcs[11][2].adj = 4; G->arcs[12][2].adj = 32; G->arcs[12][7].adj = 4;
for (int i = 0; i < G->vexnum; i++)
{
for (int j = 0; j < i; j++)
{
G->arcs[j][i].adj = G->arcs[i][j].adj;
}
}
}
void ShortestPath_DIJ(MGraph* G, int start, int **path, int* dis)
{
int final[13];
int v=0;
#if 0
for (; v < G->vexnum; ++v)
{
final[v] = FALSE;
dis[v] = G->arcs[start][v].adj;
for (int i = 0; i < G->vexnum; ++i) path[v][i] = FALSE;
if (dis[v] < INFINITY)
{
path[v][start] = TRUE;
path[v][v] = TRUE;
}
}
#endif
v = 0;
dis[start] = 0; final[start] = TRUE;
for (int i = 1; i < G->vexnum; ++i)
{
int min = INFINITY;
for (int j = 0; j < G->vexnum; ++j)
{
if (!final[j])
if (dis[j] < min)
{
v = j;
min = dis[j];
}
}
final[v] = TRUE;
for (int j = 0; j < G->vexnum; ++j)
{
if (!final[j] && (min + G->arcs[v][j].adj < dis[j]))
{
dis[j] = min + G->arcs[v][j].adj;
path[j] = path[v];
path[j][j] = TRUE;
}
}
}
}
```c
运行结果及报错内容
两个if和endif中间的部分都报错写入访问冲突