//从起始顶点v开始深度优先遍历图的迭代算法
void DepthFirstSearch(const int v)
{
int* visited = new int[graphsize];
for (int k = 0;k < graphsize;k++)
visited[k] = 0;//辅助数组初始化
stack<int> s;
s.push(v);//将起始顶点压入栈
int w;
while (!s.empty())
{
w = s.pop();//弹出一个顶点w且判断该顶点没有被访问过
if (visited[w] == 0)
{
cout << w << " ";
//输出该顶点
visited[w] = 1;//访问顶点w
Edge *p = head[w].adjacent;
while (p != NULL)
{
if (visited[p->VerAdj] == 0)
s.push(p->VerAdj);
p = p->link;
}
}
}
delete[] visited;
}
数据结构----图 DFS 非递归遍历
最新推荐文章于 2022-09-02 22:15:57 发布