使用stack实现深度优先搜索DFS(完整源码)
深度优先搜索是一种重要的算法,我们可以使用stack来实现它。本文将介绍如何使用C++中的stack来实现深度优先搜索,并提供完整的代码。需要注意的是,本篇文章主要面向编程初学者。
首先,我们先来了解一下深度优先搜索算法的基本思路。深度优先搜索从一个起点开始,遍历所有可能到达的节点,直至到达终点或者所有节点都被遍历过。其实现思路类似于树的遍历。在实现深度优先搜索时,我们需要用到stack数据结构来存储待访问的节点,以及用一个数组记录每个节点是否被遍历过。
接下来,我们来看一下具体的代码实现。首先,定义一个Graph类,该类包含一个vector类型的edges数组,用来表示图的邻接矩阵。我们可以使用addEdge()函数来添加边:
class Graph {
public:
vector<int> *edges;
Graph(int numNodes) {
edges = new vector<int>[numNodes];
}
void addEdge(int u, int v) {
edges[u].push_back(v);
}
};
有了Graph类之后,我们就可以开始实现深度优先搜索了。我们可以定义一个dfs()函数,该函数接收两个参数:当前节点index和v