图的简单应用--简单

源程序:

//用一维数组表示顶点,二维数组表示边,已知图的顶点和边,用矩阵表示出顶点和边的值
//有效边用户1表示,无效边用0表示
#include <stdio.h>
#define MaxVerNum 100

typedef struct
{
char vexs[MaxVerNum]; //顶点数组,相当于私有变量
int edges[MaxVerNum][MaxVerNum]; //顶点之间的边,也是私有变量
int n;
int e;
}Mgraph;

char vertex[]="12345";
int nvertex=5,nedges=6;
int connection[][2]={{1,2},{2,3},{2,5},{3,5},{3,4},{1,4}};
void CreateMgraph(Mgraph *G)
{
int i,j,k;
G->n=nvertex;
G->e=nedges;

for(i=0;i<G->n;i++)
G->vexs[i]=vertex[i]; //相当于给私有变量赋值
for(i=0;i<G->n;i++)
for(j=0;j<G->n;j++)
G->edges[i][j]=0; //初始化边,边用矩阵表示,刚开始全部为0000000000000

for(k=0;k<G->e;k++)
{
i=connection[k][0]-1;
j=connection[k][1]-1;
G->edges[i][j]=1;
G->edges[j][i]=1; //此图为无向图,若是有向图,则没有此行
}
}

void printMgraph(Mgraph &G)
{
int i,j;
printf("矩阵的顶点数:%d\n",G.n);
printf("矩阵的边数:%d\n",G.e);
for(i=0;i<G.n;i++)
{
for(j=0;j<G.n;j++)
printf(" %d",G.edges[i][j]);
printf("\n");
}
}
//主函数
void main()
{
Mgraph g;
CreateMgraph(&g);
printMgraph(g);
}

运行结果:

猜你喜欢

转载自www.cnblogs.com/duanqibo/p/11811029.html