图邻接矩阵实现各种基本操作的完整代码
时间: 2023-10-20 21:10:07 浏览: 49
下面是基于邻接矩阵实现图的各种基本操作的完整代码,包括创建图、插入边、删除边、检查边、打印图等。
```c++
#include <iostream>
#include <vector>
using namespace std;
// 定义邻接矩阵表示的图类
class Graph {
private:
int V; // 图的顶点数
vector<vector<int>> adj; // 邻接矩阵,用于存储边的信息
public:
// 构造函数
Graph(int v) {
V = v;
adj.resize(V, vector<int>(V, 0));
}
// 添加一条边
void addEdge(int u, int v) {
adj[u][v] = 1;
adj[v][u] = 1;
}
// 删除一条边
void removeEdge(int u, int v) {
adj[u][v] = 0;
adj[v][u] = 0;
}
// 检查是否存在一条边
bool hasEdge(int u, int v) {
return adj[u][v] == 1;
}
// 打印图
void printGraph() {
for (int i = 0; i < V; i++) {
cout << "Vertex " << i << " is connected to: ";
for (int j = 0; j < V; j++) {
if (adj[i][j] == 1) {
cout << j << " ";
}
}
cout << endl;
}
}
};
int main() {
// 创建一个有5个顶点的图
Graph g(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);
// 检查某些边是否存在
cout << "Does edge (1, 4) exist? " << g.hasEdge(1, 4) << endl;
cout << "Does edge (2, 4) exist? " << g.hasEdge(2, 4) << endl;
// 删除一些边
g.removeEdge(1, 4);
g.removeEdge(3, 4);
// 打印图
g.printGraph();
return 0;
}
```
运行上述代码,输出结果如下:
```
Does edge (1, 4) exist? 1
Does edge (2, 4) exist? 0
Vertex 0 is connected to: 1 4
Vertex 1 is connected to: 0 2 3
Vertex 2 is connected to: 1 3
Vertex 3 is connected to: 1 2
Vertex 4 is connected to: 0
```
可以看到,该代码实现了基本的图操作,并且能够正确地检查边、添加边、删除边和打印图。