用邻接矩阵的存储下图,并输出邻接矩阵
时间: 2023-12-21 13:30:03 浏览: 32
以下是用邻接矩阵存储图并输出邻接矩阵的Python代码:
```python
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
# 定义邻接矩阵
adj_matrix = np.array([[0, 1, 1, 0],
[1, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 1, 0]])
# 将邻接矩阵转换为图形
G = nx.from_numpy_matrix(adj_matrix)
# 输出邻接矩阵
print(adj_matrix)
# 绘制图形
nx.draw(G, with_labels=True)
plt.show()
```
在这个例子中,我们首先定义了一个邻接矩阵,然后使用`networkx`库中的`from_numpy_matrix`函数将邻接矩阵转换为图形。最后,我们使用`nx.draw`函数绘制图形,并使用`plt.show`函数显示图形。同时,我们也输出了邻接矩阵。
--相关问题--:
1. 如何使用邻接表存储图形?
2. 如何使用`networkx`库计算图形的度数
相关问题
c语言用邻接矩阵的存储下图,并输出邻接矩阵
为了用邻接矩阵存储下图,我们需要先确定图的顶点数和边数,然后创建一个二维数组来表示邻接矩阵。假设下图有5个顶点和7条边,邻接矩阵可以这样表示:
```c
#define MAXVEX 5
#define MAXEDGE 7
int matrix[MAXVEX][MAXVEX] = {
{0, 1, 1, 0, 1},
{1, 0, 1, 1, 1},
{1, 1, 0, 1, 0},
{0, 1, 1, 0, 1},
{1, 1, 0, 1, 0}
};
```
其中,matrix[i][j]表示顶点i和顶点j之间是否有边相连,1表示有,0表示没有。由于这是一个无向图,所以邻接矩阵是对称的。
完整代码如下:
```c
#include <stdio.h>
#define MAXVEX 5
#define MAXEDGE 7
int main() {
int matrix[MAXVEX][MAXVEX] = {
{0, 1, 1, 0, 1},
{1, 0, 1, 1, 1},
{1, 1, 0, 1, 0},
{0, 1, 1, 0, 1},
{1, 1, 0, 1, 0}
};
int i, j;
for (i = 0; i < MAXVEX; i++) {
for (j = 0; j < MAXVEX; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
0 1 1 0 1
1 0 1 1 1
1 1 0 1 0
0 1 1 0 1
1 1 0 1 0
```
C语言建立无向图的邻接矩阵存储并输出
下面是C语言建立无向图的邻接矩阵存储并输出的示例代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 20 // 最大顶点数
typedef struct {
int vexs[MAX_VERTEX_NUM]; // 存放顶点的数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存放边的邻接矩阵
int vexnum, arcnum; // 存放顶点数和边数
} Graph;
void createGraph(Graph* G) {
int i, j, k;
printf("请输入顶点数和边数:");
scanf("%d%d", &G->vexnum, &G->arcnum);
printf("请输入顶点:");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &G->vexs[i]);
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arcs[i][j] = 0; // 初始化邻接矩阵
}
}
printf("请输入边(vi, vj)的顶点序号和权值:\n");
for (k = 0; k < G->arcnum; k++) {
scanf("%d%d", &i, &j);
G->arcs[i][j] = G->arcs[j][i] = 1; // 无向图的邻接矩阵中,对称位置上的值相等
}
}
void printGraph(Graph G) {
int i, j;
printf("邻接矩阵如下:\n");
for (i = 0; i < G.vexnum; i++) {
for (j = 0; j < G.vexnum; j++) {
printf("%d ", G.arcs[i][j]);
}
printf("\n");
}
}
int main() {
Graph G;
createGraph(&G);
printGraph(G);
return 0;
}
```
示例输入:
```
请输入顶点数和边数:5 6
请输入顶点:1 2 3 4 5
请输入边(vi, vj)的顶点序号和权值:
0 1
0 2
1 3
1 4
2 4
3 4
```
示例输出:
```
邻接矩阵如下:
0 1 1 0 0
1 0 0 1 1
1 0 0 0 1
0 1 0 0 1
0 1 1 1 0
```