使用c++写程序完成无向网的邻接矩阵存储结构的创建 1) 创建无向网的邻接矩阵 2) 输出该邻接矩阵
时间: 2024-12-01 20:12:54 浏览: 1
ch7.rar_创建邻接矩阵_邻接矩阵_邻接矩阵c++_邻接表
在C++中,你可以使用二维数组或`std::vector<std::vector<int>>`来创建一个无向图的邻接矩阵表示。以下是简单的步骤:
1) **创建无向网的邻接矩阵**:
```cpp
#include <iostream>
#include <vector>
// 定义邻接矩阵的数据结构
typedef std::vector<std::vector<int>> AdjacencyMatrix;
void createAdjacencyMatrix(int numVertices, AdjacencyMatrix& adjMatrix) {
adjMatrix.resize(numVertices); // 初始化一个大小为numVertices的行向量
for (int i = 0; i < numVertices; ++i) {
adjMatrix[i].resize(numVertices); // 对每个节点,初始化列向量为全零
}
}
// 添加边到邻接矩阵
void addEdge(int src, int dest, AdjacencyMatrix& adjMatrix, bool isDirected = false) {
if (!isDirected) { // 如果图是无向的,则添加两个方向的边
adjMatrix[src][dest] = 1; // 表示从src到dest有边
adjMatrix[dest][src] = 1;
} else {
adjMatrix[src][dest] = 1; // 只添加一个方向的边
}
}
int main() {
int numVertices; // 图的顶点数
std::cout << "Enter the number of vertices: ";
std::cin >> numVertices;
AdjacencyMatrix adjMatrix;
createAdjacencyMatrix(numVertices, adjMatrix);
int src, dest;
std::cout << "Enter edges in the form (source vertex, destination vertex): \n";
while (std::cin >> src >> dest) {
addEdge(src, dest, adjMatrix);
}
return 0;
}
```
2) **输出邻接矩阵**:
```cpp
void printAdjacencyMatrix(const AdjacencyMatrix& adjMatrix) {
for (int i = 0; i < adjMatrix.size(); ++i) {
std::cout << "Vertex " << i+1 << ": [";
for (int j = 0; j < adjMatrix[i].size(); ++j) {
std::cout << adjMatrix[i][j] << " ";
}
std::cout << "]" << std::endl;
}
}
// 在main函数中调用此函数打印结果
printAdjacencyMatrix(adjMatrix);
```
阅读全文