#include<stdio.h>
#define infinity 2000000000
#define MAXSIZE 100
typedef enum{DG,DN,UDG,UDN} GraphKind;
typedef struct {
int vexs[MAXSIZE];
int arcs[MAXSIZE];
int vexnum, arcnum; //顶点数与边数
GraphKind kind;
}MGraph;
int LocateVex(MGraph G, int v) {
for (int i = 0; i < G.vexnum; i++)
{
if (G.vexs[i] == v)
return i;
}
return 0;
}
void CreateUDN(MGraph& G) {
int i, j, k;
G.kind = UDN;
//图的类型为无向图
printf("输入顶点的个数和弧的个数:\n");
scanf_s("%d%d", &G.vexnum, &G.arcnum);
//输入顶点个数,弧的条数
printf("输入各个顶点,默认为int类型:");
for ( i = 0; i < G.vexnum; i++)
{
scanf_s("%d", &G.vexs[i]);
}
for (i = 0; i < G.vexnum; i++)
{
for (j = 0; j < G.vexnum; j++) {
G.arcs[i][j] = 0;
}
}
printf("输入各条弧的两个顶点和权值:\n");
for ( k = 0; k < G.arcnum; k++)
{
int v1, v2, weight;
scanf_s("%d%d%d", &v1, &v2, &weight);
//输入弧的两个顶点以及权值
i = LocateVex(G, v1);
j = LocateVex(G, v2);
G.arcs[i][j] = weight;
G.arcs[j][i] = G.arcs[i][j];
}
}
void Print(MGraph G) {
for (int i = 0; i < G.vexnum; i++) {
for (int j = 0; j < G.vexnum; j++)
printf("%d ", G.arcs[i][j]);
printf("\n");
}
}
int main() {
MGraph G;
CreateUDN(G);
printf("\n输出一下矩阵:\n");
Print(G);
return 0;
}
无向图_邻接矩阵 含bug
最新推荐文章于 2022-12-06 09:28:18 发布