读懂下列程序,仿例题建立其他图的邻接矩阵。
程序6-1
#include<malloc.h>
#include<stdio.h>
#define MAX_VEX 50
intcreatcost(cost)
intcost[][MAX_VEX]; /*cost这个二维数组用于表示图的邻接矩阵*/
{
int vexnum,arcnum,i,j,k,v1,v2;
printf("input vexnum,arcnum:\n"); /*输入图的顶点数和弧数或边数*/
scanf("%d,%d",&vexnum,&arcnum);
for(i=0;i<vexnum;i++)
for(j=0;j<vexnum;j++)
cost[i][j]=0;
for(k=0;k<arcnum;k++)
{
printf("v1,v2=");
scanf("%d,%d",&v1,&v2); /*输入所有边或所有弧的一对顶点V1,V2*/
cost[v1][v2]=1;
/*cost[v2][v1]=1;*/ /*若为无向图则应加上此语句*/
}
return(vexnum);
}
main()
{
int i,j,vexnum;
int cost[MAX_VEX][MAX_VEX];
vexnum=creatcost(cost); /*建立图的邻接矩阵*/
printf("Output AdjMatrix of graph:\n");
for(i=0;i<vexnum;i++)
{
for(j=0;j<vexnum;j++)
printf(" %3d",cost[i][j]);
printf("\n");
}
}
程序运行结果:
/*对于教材第143页图6.12中的G2 图,运行时输入数据及运行结果显示如下: */
input vexnum,arcnum:
3,3(回车)
v1,v2=0,1(回车)
v1,v2=0,2(回车)
v1,v2=2,1(回车)
Output AdjMatrixof graph:
0 1 1

