求助~~我用数组表示法储存的图,但是不知道为什么创建了之后输不出来。。。。急!!
程序代码:
#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); }