实训5.1

图的邻接矩阵存储 

源程序

#include <stdio.h>
#include <stdlib.h>

const int vnum=20;

//定义图的类型
typedef struct gp
{
char verx[vnum];
int arcs[vnum][vnum];
int vernum,arcnum;
}Graph;

//创建图,输入顶点和边的信息
void creat(Graph *g)
{
int i,j,k;
printf("请输入顶点数和边数:");
scanf("%d%d",&g->vernum,&g->arcnum);
printf("请输入%d个顶点的值:",g->vernum);
getchar();
for(i=0;i<g->vernum;i++)
scanf("%c",&g->verx[i]);

for(i=0;i<g->vernum;i++) //此双重循环表示所有结点都没有连接
for(j=0;j<g->vernum;j++)
g->arcs[i][j]=0;

printf("请输入 %d条边",g->arcnum); //连接两点形成边,有边就是1,无边就是0
for(k=0;k<g->arcnum;k++)
{
scanf("%d%d",&i,&j);
g->arcs[i][j]=1;
g->arcs[j][i]=1;
}
}

//输出邻接矩阵
void showMatrix(Graph *g)
{
int i;
printf(" ");
for(i=0;i<g->vernum;i++) //输出第一行的提示点:A B C D
printf("%3c",g->verx[i]);
printf(" "); //换行

for(i=0;i<g->vernum;i++)
{
printf("%3c",g->verx[i]);
for(int j=0;j<g->vernum;j++)
printf("%3d",g->arcs[i][j]);
printf(" ");
}
}

///主函数
int main()
{
Graph g,*pg=&g;
creat(pg);
showMatrix(pg);
return 1;
}

运行结果:

原文地址:https://www.cnblogs.com/duanqibo/p/13288699.html