求助~~我用数组表示法储存的图,但是不知道为什么创建了之后输不出来。。。。急!!
程序代码:#define VEXTYPE int
#define ADJTYPE int
#define MAXLEN 40
#include <stdio.h>
typedef struct {
VEXTYPE vexs[MAXLEN];
ADJTYPE arcs[MAXLEN][MAXLEN];
int vexnum,arcnum;
int kind;
}MGRAPH; //定义graph结构体
MGRAPH create_mgraph(){
MGRAPH mg;
int i,j,k;
mg.kind=2; //2代表无向图。。。。有待改进
printf("\n请输入顶点数和边的条数(以逗号隔开):");
scanf("%d,%d",&i,&j);
fflush(stdin); //该函数是清空当前输入流所剩下的所有数据 e.g scanf("%d",&i); c=getchar(); 12
if(i<=MAXLEN && j<=(MAXLEN*(MAXLEN-1))/2 ) //严格意义上,输入均要判断其合法性
mg.vexnum=i; mg.arcnum=j;
for(i=1;i<=mg.vexnum;i++){
printf("请输入第%d个顶点",i);
scanf("%d",&mg.vexs[i-1]);fflush(stdin);
}
for(i=0;i<mg.vexnum;i++) //邻接矩阵由于设定是[40][40],多出的用不上,所以用多少控制多少
for(j=0;j<mg.vexnum;i++) //初始化我们所需要的邻接矩阵
mg.arcs[i][j]=0;
for(k=1;k<=mg.arcnum;k++){
printf("请输入第%d条边的起始顶点和终止顶点(以逗号隔开)",k);
scanf("%d,%d",&i,&j);
mg.arcs[i-1][j-1]=1;
mg.arcs[j-1][i-1]=1;
fflush(stdin);
}
return mg;
}
void print_mgraph( MGRAPH mg ){
int i=0,j=0;
for(i=0;i<mg.vexnum;i++) { //有问题!!!
for(j=0;j<mg.vexnum;j++){
printf("%d ",mg.arcs[i][j]);
if((j+1)%mg.vexnum==0) printf("\n");
}
}
}
void main(){
MGRAPH mg;
mg=create_mgraph();
print_mgraph(mg);
}









天。。。。。我怎么这么粗心~~~不过谢谢啦!!