建立无向图的邻接矩阵
时间: 2023-11-10 13:50:30 浏览: 102
建立无向图的邻接矩阵可以按照以下步骤进行:
1. 首先创建一个结构体来存储邻接矩阵的信息,包括一个存放顶点信息的一维数组(Vexs),一个存放边信息的二维数组(Edge),以及当前的顶点数和边数这四个变量。
2. 创建一个子函数CreateMGraph,用来创建无向图的邻接矩阵。在这个函数中,首先根据用户输入的顶点数和边数初始化邻接矩阵,将顶点与自身的边设为0,表示无边;将顶点与其他顶点的边设为“∞”,表示无边。然后,用户需要输入顶点与顶点之间的边的权值,如果没有权值,则输入-1表示有边但没有权值。完成输入后,调用子函数ShowpGraph,将邻接矩阵显示出来。
3. 子函数ShowpGraph用来输出创建的无向图的邻接矩阵。通过遍历邻接矩阵,将顶点和边的信息输出到控制台上即可。
通过以上步骤,就可以建立无向图的邻接矩阵,并将其显示出来。
相关问题
无向图邻接矩阵建立并输出
邻接矩阵是一种表示图形的方法,其中矩阵中的每个元素都表示两个节点之间是否存在边。如果边存在,则该元素的值为1,否则为0。以下是一个无向图邻接矩阵的建立和输出的示例代码:
```c++
#include <iostream>
using namespace std;
const int MAXN = 100;
int main() {
int n, m;
int G[MAXN][MAXN]; // 邻接矩阵
cin >> n >> m; // n为节点数,m为边数
// 初始化邻接矩阵
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
G[i][j] = 0;
}
}
// 建立邻接矩阵
for (int i = 0; i < m; i++) {
int u, v; // u和v分别为边的两个节点
cin >> u >> v;
G[u][v] = G[v][u] = 1; // 由于是无向图,所以要在两个相邻节点之间建立双向边
}
// 输出邻接矩阵
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << G[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
输入示例:
```
5 6
1 2
1 3
2 4
2 5
3 4
4 5
```
输出示例:
```
0 1 1 0 0
1 0 0 1 1
1 0 0 1 0
0 1 1 0 1
0 1 0 1 0
```
以上代码可以处理最多100个节点的无向图,如果需要处理更大的图,请将MAXN值适当调大。
无向图邻接矩阵的建立C语言
邻接矩阵是一种表示图形的方法,它使用矩阵来表示节点和它们之间的连接。在无向图中,连接是双向的,因此它们在邻接矩阵中被表示为对称的。下面是使用C语言实现无向图邻接矩阵的示例代码:
```
#define MAXVEX 100 // 最大节点数
#define INF 65535 // 无穷大
typedef struct {
int vexs[MAXVEX]; // 节点集合
int arcs[MAXVEX][MAXVEX]; // 邻接矩阵
int num_vexs, num_edges; // 节点数和边数
} Graph;
// 创建图,输入节点数和边数
void createGraph(Graph *G) {
int i, j, k, w;
printf("输入节点数和边数:\n");
scanf("%d %d", &G->num_vexs, &G->num_edges);
for (i = 0; i < G->num_vexs; i++) {
printf("输入第%d个节点的值:", i + 1);
scanf("%d", &G->vexs[i]);
}
for (i = 0; i < G->num_vexs; i++) {
for (j = 0; j < G->num_vexs; j++) {
G->arcs[i][j] = INF; // 初始化邻接矩阵
}
}
for (k = 0; k < G->num_edges; k++) {
printf("输入边(vi, vj)的下标i, j和权值w:\n");
scanf("%d %d %d", &i, &j, &w);
G->arcs[i][j] = w; // 存储边信息
G->arcs[j][i] = w;
}
}
int main() {
Graph G;
createGraph(&G);
return 0;
}
```
这段代码首先定义了一个结构体`Graph`,其中包含节点集合`vexs`、邻接矩阵`arcs`、节点数`num_vexs`和边数`num_edges`。在`createGraph`函数中,用户输入节点数和边数,并依次输入每个节点的值。然后,将邻接矩阵初始化为无穷大,表示节点之间没有连接。最后,用户输入每条边的信息,包括起点、终点和权值,将边存储在邻接矩阵中。