编写一个c++程序,用邻接矩阵存储无向图,并输出该邻接矩阵,最后编写主函数进行测试
时间: 2024-12-28 19:32:50 浏览: 10
在C++中,我们可以创建一个邻接矩阵来存储无向图。首先,我们需要定义一个二维数组作为邻接矩阵,然后通过两个嵌套循环添加节点间的边。接下来是一个简单的例子:
```cpp
#include <iostream>
#include <vector>
// 定义邻接矩阵大小
const int V = 4; // 图中顶点的数量
// 创建邻接矩阵结构体
struct AdjacencyMatrix {
std::vector<std::vector<int>> adjMatrix; // 二维整数数组
};
// 函数用于初始化邻接矩阵,0表示无边
void initializeAdjMatrix(AdjacencyMatrix& graph) {
for (int i = 0; i < V; ++i) {
graph.adjMatrix.push_back(std::vector<int>(V, 0)); // 初始化行
}
}
// 函数用于输出邻接矩阵
void printAdjMatrix(const AdjacencyMatrix& graph) {
for (int i = 0; i < V; ++i) {
for (int j = 0; j < V; ++j) {
std::cout << "A[" << i << "][" << j << "] = " << graph.adjMatrix[i][j] << "\t";
}
std::cout << "\n";
}
}
// 主函数,用于测试邻接矩阵
int main() {
AdjacencyMatrix graph;
initializeAdjMatrix(graph);
// 添加边到邻接矩阵(例如,顶点0与顶点1之间有一条边)
graph.adjMatrix[0][1] = 1;
// 输出初始状态的邻接矩阵
printAdjMatrix(graph);
// 这里可以添加更多边并再次打印邻接矩阵进行测试
graph.adjMatrix[1][0] = 1; // 反向边,无向图双向连接
printAdjMatrix(graph);
return 0;
}
```
在这个例子中,`main()`函数创建了一个邻接矩阵,然后添加了两条边(顶点0和顶点1之间的连接)。最后,它会先打印初始的邻接矩阵,再添加反向边后再次打印。
阅读全文