菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
27
0

实训5.1

原创
05/13 14:22
阅读数 58034

图的邻接矩阵存储 

源程序

#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("\n"); //换行

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("\n");
}
}

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

运行结果:

相关热门文章

发表评论

0/200
27 点赞
0 评论
收藏