下面是一个示例实现图的深度优先搜索遍历算法的程序:
#include <iostream>
#include <vector>
using namespace std;
// 图的邻接表表示
class Graph {
private:
int V; // 顶点数
vector<vector<int>> adjList; // 邻接表
public:
Graph(int v) {
V = v;
adjList.resize(V);
}
void addEdge(int u, int v) {
adjList[u].push_back(v);
}
void DFSUtil(int v, vector<bool>& visited) {
visited[v] = true;
cout << "visit vertex: " << v << endl;
for (int i : adjList[v]) {
if (!visited[i]) {
DFSUtil(i, visited);
}
}
}
void DFS() {
vector<bool> visited(V, false);
cout << "深度优先遍历:" << endl;
for (int i = 0; i < V; ++i) {
if (!visited[i]) {
DFSUtil(i, visited);
}
}
}
};
int main() {
int vertices, edges;
cout << "请输入顶点数和边数(输入格式为:顶点数 边数):";
cin >> vertices >> edges;
Graph graph(vertices);
cout << "请输入顶点信息(输入格式为:顶点号<CR>),每个顶点以回车作为结束:" << endl;
for (int i = 0; i < vertices; ++i) {
int vertex;
cin >> vertex;
}
cout << "请输入边的信息(输入格式为:i j):" << endl;
for (int i = 0; i < edges; ++i) {
int u, v;
cin >> u >> v;
graph.addEdge(u, v);
}
graph.DFS();
return 0;
}
你可以将上述代码保存为.cpp文件,通过编译运行后输入相应的顶点和边的信息,即可得到图的深度优先遍历结果。
内容由零声教学AI助手提供,问题来源于学员提问