以邻接矩阵形式创建一个无向图程序源代码
时间: 2023-10-18 12:06:29 浏览: 124
以下是使用邻接矩阵表示无向图的C++程序源代码:
```cpp
#include <iostream>
using namespace std;
// 定义无向图类
class Graph {
private:
int numVertices; // 图中的顶点数
int** adjMatrix; // 邻接矩阵指针
public:
// 构造函数
Graph(int numVertices) {
this->numVertices = numVertices;
// 创建邻接矩阵
adjMatrix = new int*[numVertices];
for (int i = 0; i < numVertices; i++) {
adjMatrix[i] = new int[numVertices];
for (int j = 0; j < numVertices; j++) {
adjMatrix[i][j] = 0;
}
}
}
// 添加边
void addEdge(int i, int j) {
adjMatrix[i][j] = 1;
adjMatrix[j][i] = 1;
}
// 打印邻接矩阵
void printAdjMatrix() {
for (int i = 0; i < numVertices; i++) {
for (int j = 0; j < numVertices; j++) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
}
};
// 主函数
int main() {
Graph g(5); // 创建一个有5个节点的图
// 添加边
g.addEdge(0, 1);
g.addEdge(0, 4);
g.addEdge(1, 2);
g.addEdge(1, 3);
g.addEdge(1, 4);
g.addEdge(2, 3);
g.addEdge(3, 4);
// 打印邻接矩阵
g.printAdjMatrix();
return 0;
}
```
在上面的代码中,我们首先定义了一个Graph类,其中有两个私有成员变量:numVertices表示图中的顶点数,adjMatrix是一个指向动态分配的二维数组的指针,用于存储邻接矩阵。
Graph类还有三个公共成员函数:构造函数,addEdge函数用于添加边,printAdjMatrix函数用于打印邻接矩阵。
在主函数中,我们创建了一个有5个节点的图,并使用addEdge函数添加了7条边。最后,我们调用printAdjMatrix函数打印出邻接矩阵。
阅读全文