图的创建pta邻接矩阵
时间: 2023-09-06 11:08:54 浏览: 79
给定一个无向图,可以使用邻接矩阵来表示图的结构。假设图有n个节点,我们可以使用一个n x n的矩阵A来表示图的邻接矩阵,其中A[i][j]表示节点i和节点j之间是否有边相连。如果节点i和节点j之间有边相连,则A[i][j] = 1,否则A[i][j] = 0。
下面是一个使用邻接矩阵创建图的示例代码:
```python
# 定义邻接矩阵
n = 4
adj_matrix = [[0] * n for _ in range(n)]
# 添加边
adj_matrix[0][1] = 1
adj_matrix[1][0] = 1
adj_matrix[1][2] = 1
adj_matrix[2][1] = 1
adj_matrix[2][3] = 1
adj_matrix[3][2] = 1
# 输出邻接矩阵
for i in range(n):
for j in range(n):
print(adj_matrix[i][j], end=" ")
print()
```
输出结果为:
```
0 1 0 0
1 0 1 0
0 1 0 1
0 0 1 0
```
其中,第i行第j列的数字表示节点i和节点j之间是否有边相连,0表示无边,1表示有边。例如,第0行第1列的数字1表示节点0和节点1之间有边相连,而第2行第3列的数字1表示节点2和节点3之间有边相连。
相关问题
图的深度优先遍历pta邻接矩阵
深度优先遍历(Depth First Search)是一种常见的图遍历算法,它通过尽可能深地搜索图的分支来遍历节点,当节点已经被访问过或者不存在时则回溯到之前的节点继续搜索。
对于一个图的邻接矩阵表示,深度优先遍历可以使用递归或者栈实现。下面是使用递归实现的代码:
```c++
const int MAXN = 100;
int graph[MAXN][MAXN]; // 图的邻接矩阵
bool visited[MAXN]; // 记录节点是否被访问过
void dfs(int u, int n) {
visited[u] = true; // 标记节点已被访问
printf("%d ", u); // 输出节点编号
for (int v = 0; v < n; v++) {
if (graph[u][v] && !visited[v]) { // 如果节点u和节点v有边,且节点v未被访问
dfs(v, n); // 递归访问节点v
}
}
}
int main() {
int n; // 节点数
scanf("%d", &n);
// 输入图的邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
// 从节点0开始深度优先遍历图
dfs(0, n);
return 0;
}
```
在上面的代码中,`dfs`函数表示从节点`u`开始深度优先遍历图,其中`n`表示图中节点的数量。`visited`数组记录节点是否被访问过。首先标记节点`u`为已访问,然后输出节点编号。接着遍历节点`u`的所有邻居节点`v`,如果节点`u`和节点`v`有边,且节点`v`未被访问,则递归访问节点`v`。最后,在`main`函数中从节点0开始深度优先遍历整个图。
需要注意的是,由于深度优先遍历会递归访问节点,因此在实现时需要注意避免死循环。
无向图的创建邻接矩阵
创建无向图的邻接矩阵可以使用二维数组来表示。邻接矩阵是一个正方形矩阵,其中行和列分别代表图中的顶点,矩阵中的元素表示两个顶点之间是否存在边。如果两个顶点之间存在边,则对应位置的元素为1,否则为0。
下面是一个示例代码,演示了如何创建无向图的邻接矩阵:
```python
# 定义无向图的顶点数和边数
num_vertices = 4
num_edges = 5
# 创建一个空的邻接矩阵
adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边到邻接矩阵
edges = [(0, 1), (0, 2), (1, 2), (2, 3), (3, 0)]
for edge in edges:
vertex1, vertex2 = edge
adj_matrix[vertex1][vertex2] = 1
adj_matrix[vertex2][vertex1] = 1
# 打印邻接矩阵
for row in adj_matrix:
print(row)
```
运行以上代码,将输出以下邻接矩阵:
```
[0, 1, 1, 0]
[1, 0, 1, 0]
[1, 1, 0, 1]
[0, 0, 1, 0]
```
这个邻接矩阵表示了一个有4个顶点和5条边的无向图。你可以根据需要修改顶点数和边数,并添加适当的边来创建不同的无向图。