使用c++写程序完成无向网的邻接矩阵存储结构的创建 1) 创建无向网的邻接矩阵并输出该邻接矩阵
时间: 2024-12-01 09:12:53 浏览: 2
ch7.rar_创建邻接矩阵_邻接矩阵_邻接矩阵c++_邻接表
在C++中,你可以通过二维数组或者`std::vector`来实现无向图的邻接矩阵表示。这里是一个基本的例子,我们将使用`std::vector`来存储邻接矩阵:
```cpp
#include <iostream>
#include <vector>
// 定义无向图节点数的最大值
const int MAX_NODES = 10;
class Graph {
private:
std::vector<std::vector<int>> adjMatrix; // 邻接矩阵
public:
Graph(int numNodes) {
adjMatrix.resize(numNodes, std::vector<int>(numNodes, 0)); // 初始化全零矩阵
}
void addEdge(int src, int dest) {
adjMatrix[src][dest] = 1; // 从源到目的边设置为1(无向图)
adjMatrix[dest][src] = 1; // 反方向也设为1,因为是无向图
}
void printAdjMatrix() {
for (int i = 0; i < MAX_NODES; ++i) {
for (int j = 0; j < MAX_NODES; ++j) {
if (adjMatrix[i][j] != 0)
std::cout << "1 ";
else
std::cout << "0 ";
}
std::cout << "\n";
}
std::cout << "\n";
}
};
int main() {
int numNodes;
std::cout << "Enter the number of nodes in the graph: ";
std::cin >> numNodes;
Graph g(numNodes);
// 添加一些边
int edge;
std::cout << "Enter edges (source vertex then destination vertex): \n";
while (std::cin >> edge && edge >= 0 && edge < numNodes) {
int src, dest;
std::cin >> src >> dest;
g.addEdge(src, dest);
}
g.printAdjMatrix();
return 0;
}
```
在这个例子中,用户输入无向图的节点数和边的信息,然后程序会创建一个邻接矩阵,并打印出来。注意,这个邻接矩阵是二元的,非零元素表示两个节点之间有边。
阅读全文