给定一个无向图,在此无向图中增加一个新顶点。用c++代码实现
时间: 2024-01-22 14:17:54 浏览: 85
C++求有向图中某顶点的出度 数据结构.docx
以下是用邻接表存储的无向图增加新顶点的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 定义邻接表存储的无向图
class Graph {
public:
int V; // 顶点数
vector<int> *adj; // 邻接表
Graph(int V) {
this->V = V;
adj = new vector<int>[V];
}
// 添加一条边
void addEdge(int v, int w) {
adj[v].push_back(w);
adj[w].push_back(v);
}
// 添加一个新顶点
void addVertex() {
V++;
vector<int> newVertex;
adj[V-1] = newVertex;
}
};
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);
cout << "原始的无向图:\n";
for (int v = 0; v < g.V; ++v) {
cout << v << ":";
for (int w : g.adj[v]) {
cout << " " << w;
}
cout << endl;
}
g.addVertex(); // 添加一个新顶点
cout << "\n增加新顶点之后的无向图:\n";
for (int v = 0; v < g.V; ++v) {
cout << v << ":";
for (int w : g.adj[v]) {
cout << " " << w;
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
原始的无向图:
0: 1 4
1: 0 2 3 4
2: 1 3
3: 1 2 4
4: 0 1 3
增加新顶点之后的无向图:
0: 1 4
1: 0 2 3 4
2: 1 3
3: 1 2 4
4: 0 1 3
5:
```
阅读全文