用邻接矩阵创建无向图
时间: 2023-12-24 09:57:56 浏览: 163
要用邻接矩阵创建无向图,你需要先确定图中的顶点数量。然后,创建一个大小为顶点数量的二维矩阵,初始化所有元素为0。接下来,对于每条边 (u, v),将矩阵的第 u 行第 v 列和第 v 行第 u 列的元素设置为1,表示存在一条连接顶点 u 和 v 的边。
以下是一段示例代码,展示了如何用邻接矩阵创建无向图:
```python
# 定义顶点数量
num_vertices = 5
# 创建一个大小为 num_vertices x num_vertices 的邻接矩阵
adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边 (u, v)
def add_edge(u, v):
adj_matrix[u][v] = 1
adj_matrix[v][u] = 1
# 示例:添加三条边
add_edge(0, 1)
add_edge(1, 2)
add_edge(2, 3)
# 打印邻接矩阵
for row in adj_matrix:
print(row)
```
输出结果为:
```
[0, 1, 0, 0, 0]
[1, 0, 1, 0, 0]
[0, 1, 0, 1, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
```
这个邻接矩阵表示了一个有 5 个顶点的无向图,其中的 1 表示存在边,0 表示不存在边。
相关问题
用邻接矩阵创建无向图c语言
好的,下面是用邻接矩阵创建无向图的 C 语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 50 // 定义邻接矩阵的最大大小
int adjMatrix[MAX_SIZE][MAX_SIZE]; // 声明邻接矩阵
int numVertices; // 图的顶点数
// 初始化邻接矩阵
void initAdjMatrix() {
int i, j;
for(i = 0; i < numVertices; i++) {
for(j = 0; j < numVertices; j++) {
adjMatrix[i][j] = 0; // 初始化为0,表示无边相连
}
}
}
// 添加边
void addEdge(int i, int j) {
adjMatrix[i][j] = 1;
adjMatrix[j][i] = 1;
}
// 打印邻接矩阵
void printAdjMatrix() {
int i, j;
for(i = 0; i < numVertices; i++) {
for(j = 0; j < numVertices; j++) {
printf("%d ", adjMatrix[i][j]);
}
printf("\n");
}
}
int main() {
int i, j, numEdges;
printf("请输入图的顶点数:");
scanf("%d", &numVertices);
initAdjMatrix(); // 初始化邻接矩阵
printf("请输入图的边数:");
scanf("%d", &numEdges);
for(int k = 1; k <= numEdges; k++) {
printf("请输入第 %d 条边的两个端点:", k);
scanf("%d %d", &i, &j);
addEdge(i, j); // 添加一条边
}
printAdjMatrix(); // 打印邻接矩阵
return 0;
}
```
这段代码可以根据用户输入的顶点数和边数,创建一个邻接矩阵表示的无向图,并打印出邻接矩阵。其中,`initAdjMatrix()` 函数用于初始化邻接矩阵,`addEdge()` 函数用于添加一条边,`printAdjMatrix()` 函数用于打印邻接矩阵。
邻接矩阵创建无向图
邻接矩阵可以用来表示无向图,其中矩阵的行和列分别代表图中的节点,矩阵中的元素则表示相邻节点之间的连接情况。对于无向图,邻接矩阵是对称的,即矩阵中第i行第j列和第j行第i列的元素应该相同。
下面是一个创建无向图邻接矩阵的示例代码(假设图中有n个节点):
```
int adjMatrix[n][n]; // 定义邻接矩阵
// 初始化邻接矩阵,所有元素都为0
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
adjMatrix[i][j] = 0;
}
}
// 添加边,将相邻节点之间的元素标记为1
adjMatrix[0][1] = 1;
adjMatrix[1][0] = 1;
adjMatrix[1][2] = 1;
adjMatrix[2][1] = 1;
// ...
// 打印邻接矩阵
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
```
在上面的代码中,我们首先定义了一个n x n的二维数组,用于表示邻接矩阵。然后,我们初始化所有元素为0,并逐个添加边,将相邻节点之间的元素标记为1。最后,我们打印邻接矩阵,以便检查构建的图是否正确。
阅读全文