图这一部分是数据结构最难的部分,下面是代码
#include<stdio.h>
#include<stdlib.h>
#define MAXV 10
typedef struct {
int edgs[MAXV][MAXV];//邻接矩阵数组
int n, e;//定点数,边数
char vexs[MAXV];//顶点的类型
}MatGraph;
void Create(MatGraph* G)
{
int k,p;
scanf("%d %d", &G->n, &G->e);
for (int i = 0; i < G->n; i++)
{
scanf("%c", &G->vexs[i]);
}
for (int i = 0; i < G->e; i++)
{
for (int j = 0; j < G->e; j++)
{
G->edgs[i][j] = 0;
}
}
for (int i = 0; i < G->e; i++)
{
scanf("%d %d", &p, &k);
G->edgs[p][k] = G->edgs[k][p] = 1;
}
}
void print(MatGraph* G)
{
printf(" \t");
for (int i = 0; i < G->n; i++)
{
printf("%d\t",G->vexs[i]);
}
printf("\n");
for (int i = 0; i < G->n; i++)
{
printf("%d\t",G->vexs[i]);
for (int j = 0; j < G->n; j++)
{
if (G->edgs[i][j] == 0)
{
printf("#\t");
}
else
{
printf("%d\t",G->edgs[i][j]);
}
}
printf("\n");
}
}
int main()
{
MatGraph Mat;
Create(&Mat);
print(&Mat);
return 0;
}
下面是运行结果,这里展示的是无向图,也可以输入一个有向图,把原代码改动一两处就可以了。