C++采用邻接矩阵表示法创建无向图
时间: 2024-12-01 14:12:38 浏览: 38
在C++中,邻接矩阵是一种常用的表示无向图的数据结构。它是一个二维数组,其中行和列对应图中的顶点,矩阵的元素值通常有三种情况:
1. 如果图中不存在边连接两个顶点,则对应的矩阵元素为0;
2. 如果存在一条从顶点i到顶点j的边,则矩阵[i][j]等于1(对于无权图)或存储边的权重(对于带权重的图);
3. 对于自环,即顶点i指向自身,通常设置为1或特殊的值,如无穷大。
创建无向图邻接矩阵的过程如下:
```cpp
#include <vector>
// 定义邻接矩阵的大小(假设是VxV)
std::vector<std::vector<int>> adjMatrix(V, std::vector<int>(V, 0)); // V代表顶点数
// 添加边
void addEdge(int src, int dest) {
adjMatrix[src][dest] = 1; // 或者存储权重
adjMatrix[dest][src] = 1; // 因为无向图需要双向连接
}
// 访问某个顶点的所有邻居
std::vector<int> getNeighbors(int vertex) {
return adjMatrix[vertex];
}
```
相关问题
邻接矩阵表示法创建无向图 代码
下面是使用邻接矩阵表示法创建无向图的代码示例,其中使用了二维数组来存储邻接矩阵:
```c++
#include<iostream>
using namespace std;
const int MAXN = 100; // 图的最大节点数
int graph[MAXN][MAXN]; // 邻接矩阵表示法
int n, m; // n 表示节点数,m 表示边数
int main()
{
cin >> n >> m; // 输入节点数和边数
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v; // 输入一条边的两个端点
graph[u][v] = 1; // 标记有一条从 u 到 v 的边
graph[v][u] = 1; // 由于是无向图,所以还要标记有一条从 v 到 u 的边
}
return 0;
}
```
以上代码实现了使用邻接矩阵表示法创建无向图的功能,可以在输入节点数和边数后,逐个输入边的两个端点,然后标记对应的邻接矩阵元素。
使用c++写一段邻接矩阵表示法创建无向图的简单代码
下面是使用邻接矩阵表示法创建无向图的简单代码:
```c++
#include<iostream>
using namespace std;
#define MAXV 100 // 最大顶点数
int G[MAXV][MAXV]; // 存储邻接矩阵的数组
int V, E; // 顶点数和边数
void createGraph() {
cout << "请输入顶点数和边数(以空格分隔):" << endl;
cin >> V >> E;
// 初始化邻接矩阵
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
G[i][j] = 0;
}
}
// 读取每条边的信息,并在邻接矩阵中标记
cout << "请输入每条边的起点和终点(以空格分隔):" << endl;
for (int i = 0; i < E; i++) {
int u, v;
cin >> u >> v;
G[u][v] = G[v][u] = 1; // 标记邻接矩阵中的对应位置
}
}
int main() {
createGraph();
// 输出邻接矩阵
cout << "邻接矩阵:" << endl;
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
cout << G[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
以上代码中,我们使用二维数组 G 存储邻接矩阵,其中 G[i][j] 表示顶点 i 和 j 之间是否有边。在 createGraph() 函数中,我们先读取顶点数和边数,然后初始化邻接矩阵,最后读取每条边的信息并在邻接矩阵中标记。最后在主函数中输出邻接矩阵。
阅读全文