首页 > 其他 > 详细

利用队列实现图的深度优先遍历

时间:2021-02-03 18:02:03      阅读:47      评论:0      收藏:0      [点我收藏+]
void DFS_queue(Vertex & TestVertex)
{
	queue<int> Q1;	//创建一个队列来存储节点对应在head的位置
	vector<bool> V1;	//创建一个数组来表示该节点是否被遍历过
	V1.resize(MAXNODE);
	for (int i = 0; i < MAXNODE; i++)//初始化所有节点没有被访问过
	{
		V1[i] = false;
	}
	Q1.push(0);
	int location;
	NODE* NodeMove;
	while (!Q1.empty())
	{
		location = Q1.front();//获取队列的第一个数据值
		NodeMove = TestVertex.head[location].next;
		while (NodeMove != NULL)
		{
			Q1.push(NodeMove->pos);
			NodeMove = NodeMove->next;
		}
		//将第一个出队,如果没有输出过就输出,输出过就直接出队
		if (V1[location] == false)
		{
			cout << " " << TestVertex.head[location].Name;
			V1[location] = true;
			Q1.pop();
		}
		else
		{
			Q1.pop();
		}
	}
}

  

利用队列实现图的深度优先遍历

原文:https://www.cnblogs.com/Sna1lGo/p/14367920.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!