C语言 求大神帮忙改一下错误 不知道怎么改
发布网友
发布时间:2022-05-10 18:49
我来回答
共2个回答
热心网友
时间:2023-10-22 18:59
你用的编译器不支持引用传参。
建议参数都改成指针,函数里都换成指针方式。
我给你改了一下。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 20
typedef int Arc_Type;
typedef char VerTex_Type[5];
typedef enum
{
DG, DN, UDG, UDN
} Graph_Kind;
typedef struct ArcCell
{
Arc_Type adj;
//Info_Type *info;
} AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
VerTex_Type vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vertex_num;
int arc_num;
Graph_Kind kind;
} MGraph;
void Init_MGraph( MGraph *G )
{
printf("输入图的定点数:");
scanf("%d", &G->vertex_num );
printf("输入图的边数:");
scanf("%d", &G->arc_num );
printf("输入图的类型(有向图:1 无向图:2 ):");
scanf("%d", &G->kind);
int i, j;
printf("输入节点向量(定点之间用空格隔开):");
for( i=0; i<G->vertex_num; ++i )
scanf("%s", G->vexs[i] );
for( i=0; i<G->vertex_num; ++i )
for( j=0; j<G->vertex_num; ++j )
G->arcs[i][j].adj = 0;
}
int Get_Vertex_Location( MGraph *G, VerTex_Type V )
{
int i;
for( i=0; i<G->vertex_num; ++i )
if( strcmp( V, G->vexs[i] ) == 0 )
return i;
exit(0);
}
void Create_MGraph( MGraph *G )
{
Init_MGraph( G );
int i, v1_site, v2_site;
VerTex_Type v1, v2;
printf("输入与弧相关联的顶点(形如v1 - v2):\n");
for( i=0; i<G->arc_num; ++i )
{
scanf("%s %*s %s", v1, v2 );
v1_site = Get_Vertex_Location( G, v1 );
v2_site = Get_Vertex_Location( G, v2 );
switch( G->kind )
{
case 1:
G->arcs[v1_site][v2_site].adj = 1;
break;
case 2:
G->arcs[v1_site][v2_site].adj = G->arcs[v2_site][v1_site].adj = 1;
break;
default:
exit(0);
}
}
}
void Print_Matrix( MGraph *G )//邻接矩阵的输出
{
int i, j;
printf("图的邻接矩阵为:\n");
for( i=0; i<G->vertex_num; ++i )
{
for( j=0; j<G->vertex_num; ++j )
printf(" %d", G->arcs[i][j].adj );
printf("\n");
}
}
int main()
{
MGraph G;
Create_MGraph( &G );
Print_Matrix( &G );
return 0;
}
热心网友
时间:2023-10-22 19:00
楼主用的,是什么编译软件?