#include<stdio.h>
#define MAX_NUM 20
#define INFINITY 10000000
typedef struct ArcCell {
int adj; //是顶点关系类型,对无权图01对带权图自定义
//InfoType* info; //弧相关信息的指针
}ArcCell, AdjMatrix[MAX_NUM][MAX_NUM];
typedef struct {
int vexs[MAX_NUM]; //顶点向量
AdjMatrix arcs; //邻接矩阵
int vexnum, arcnum; //顶点数和弧数
//GraphKind kind; //图的种类
}MGraph;
int LocateVex(MGraph &G, int a) { //找位置实现的方法
for (int i = 0; i < G.vexnum; i++) {
if (G.vexs[i] == a) {
return i;
}
}
return -1;
}
//构造无向图
void CreatUDN(MGraph& G) {
printf("请输入顶点数目边的数目");
scanf_s("%d%d", &G.vexnum, &G.arcnum);
for (int i = 0; i < G.vexnum; ++i) {//构造顶点变量
printf("请输入顶点值");
scanf_s("%d", &G.vexs[i]);
}
for (int i = 0; i < G.vexnum; ++i)
for (int j = 0; j < G.vexnum; ++j)
//G.arcs[i][j] = { INFINITY ,NULL };//{adj,info}
G.arcs[i][j] = { INFINITY };//因为没搞info
for (int k = 0; k < G.arcnum; ++k) {
int v1, v2, w;
printf("请输入v1 v2 and w");
scanf_s("%d%d%d", &v1, &v2,&w);//确定一条边依附的顶点和权值
int i = LocateVex(G, v1);
int j = LocateVex(G, v2);
G.arcs[i][j].adj = w;
G.arcs[j][i] = G.arcs[i][j];//无向图
}
}
int main() {
MGraph G;
CreatUDN(G);
return 0;
}
数据结构严版数组表示法简单具体实现
本文介绍了如何使用C语言定义结构体和函数来创建无向图,包括输入顶点数、边数和边的信息,以及利用邻接矩阵存储图的结构。
摘要由CSDN通过智能技术生成