帮我写一个c++图子系统的设计与实现
时间: 2023-12-17 08:06:07 浏览: 31
好的,这是一个简单的 C++ 图子系统的设计与实现示例:
```C++
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
class Graph {
private:
int V; // 图的节点数
vector<vector<int>> adj; // 存储邻接表
public:
Graph(int V) {
this->V = V;
adj.resize(V);
}
void addEdge(int u, int v) { // 添加边
adj[u].push_back(v);
adj[v].push_back(u);
}
void BFS(int s) { // 广度优先搜索
vector<bool> visited(V, false);
queue<int> q;
visited[s] = true;
q.push(s);
while (!q.empty()) {
int u = q.front();
cout << u << " ";
q.pop();
for (auto v : adj[u]) {
if (!visited[v]) {
visited[v] = true;
q.push(v);
}
}
}
}
void DFSUtil(int u, vector<bool>& visited) { // 深度优先搜索
visited[u] = true;
cout << u << " ";
for (auto v : adj[u]) {
if (!visited[v])
DFSUtil(v, visited);
}
}
void DFS(int s) {
vector<bool> visited(V, false);
DFSUtil(s, visited);
}
};
int main() {
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 << "BFS: ";
g.BFS(0);
cout << endl;
cout << "DFS: ";
g.DFS(0);
cout << endl;
return 0;
}
```
在这个示例中,我们定义了一个 `Graph` 类,其中包含了图的节点数 `V` 和邻接表 `adj`。我们实现了添加边、广度优先搜索和深度优先搜索等基本的图算法。在 `main` 函数中,我们创建了一个图对象,并添加了一些边,然后调用了 BFS 和 DFS 算法。
需要注意的是,这只是一个简单的示例,实际上,图子系统的设计与实现还需要考虑更多的问题,比如图的可视化、持久化存储、性能优化等。