#include <stdio.h>
#define MaxVertexNum 100
typedef struct {
char Vex[MaxVertexNum];//顶点表
int Edge[MaxVertexNum][MaxVertexNum];//边表
int vexnum,arcnum;//图当前的顶点数和弧数
}MGraph;
//初始化
void InitGraph(MGraph* G)
{
int i, j;
G->vexnum = 0;
G->arcnum = 0;
for (i = 0; i < MaxVertexNum; i++) {
G->Vex[i] = 0; // 将顶点表初始化
for (j = 0; j < MaxVertexNum; j++) {
G->Edge[i][j] = 0; // 将边表初始化
}
}
}
//添加顶点
void AddVertex(MGraph* G, char vertex)
{
G->Vex[G->vexnum] = vertex; // 添加顶点并更新顶点数
G->vexnum++;
}
//添加边
void AddEdge(MGraph* G, int start, int end)
{
G->Edge[start][end] = 1; // 添加边
G->Edge[end][start] = 1; // 无向图的边是双向的
G->arcnum++; // 更新边数
}
int main(){
MGraph G;
InitGraph(&G); // 初始化图
AddVertex(&G, 'A'); // 添加顶点
AddVertex(&G, 'B');
AddVertex(&G, 'C');
AddVertex(&G, 'D');
AddEdge(&G, 0, 1); // 添加边
AddEdge(&G, 0, 2);
AddEdge(&G, 1, 3);
AddEdge(&G, 2, 3);
printf("Number of vertices: %d\n", G.vexnum);
printf("Number of edges: %d\n", G.arcnum);
return 0;
}
图-链接矩阵法
最新推荐文章于 2024-07-25 14:21:47 发布