邻接矩阵存图c++代码
时间: 2023-10-02 07:08:49 浏览: 89
邻接矩阵C++代码
5星 · 资源好评率100%
以下是邻接矩阵存图的 C 代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点数组
int edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num; // 顶点数
int edge_num; // 边数
} Graph;
// 初始化图
void initGraph(Graph *G) {
G->vertex_num = 0;
G->edge_num = 0;
for (int i = 0; i < MAX_VERTEX_NUM; i++) {
G->vertex[i] = 0;
for (int j = 0; j < MAX_VERTEX_NUM; j++) {
G->edge[i][j] = 0;
}
}
}
// 添加顶点
void addVertex(Graph *G, int v) {
G->vertex[G->vertex_num++] = v;
}
// 添加边
void addEdge(Graph *G, int v1, int v2) {
G->edge[v1][v2] = 1;
G->edge[v2][v1] = 1;
G->edge_num++;
}
// 打印邻接矩阵
void printGraph(Graph *G) {
printf("邻接矩阵:\n");
for (int i = 0; i < G->vertex_num; i++) {
for (int j = 0; j < G->vertex_num; j++) {
printf("%d ", G->edge[i][j]);
}
printf("\n");
}
}
int main() {
Graph G;
initGraph(&G);
addVertex(&G, 0);
addVertex(&G, 1);
addVertex(&G, 2);
addVertex(&G, 3);
addVertex(&G, 4);
addEdge(&G, 0, 1);
addEdge(&G, 0, 3);
addEdge(&G, 1, 2);
addEdge(&G, 1, 3);
addEdge(&G, 2, 4);
addEdge(&G, 3, 4);
printGraph(&G);
return 0;
}
```
以上代码实现了邻接矩阵存图的基本操作,包括初始化图、添加顶点、添加边和打印邻接矩阵等。在主函数中,我们初始化了一个图,并添加了 5 个顶点和 6 条边,然后打印了邻接矩阵。可以根据需要调整顶点数和边数,以便测试其他场景。
阅读全文