图的创建
- 手动输入,并以节点数作为输入结束标志
- 从文件读取,文件的从第二行开始,每一行结束都要有节点数作为结束
图的存储:
vector< list<int> > graph;
图的BFS
非递归实现,借助队列
void bfs(int v)//以v开始做广度优先搜索(非递归实现,借助队列)
{
list<int>::iterator it;
visited[v] = true;
cout << v << " ";
queue<int> myque;
myque.push(v);
while (!myque.empty())
{
v = myque.front();
myque.pop();
for (it = graph[v].begin(); it != graph[v].end(); it++)
{
if (!visited[*it])
{
cout << *it << " ";
myque.push(*it);
visited[*it] = true;//访问过
}
}
}
cout << endl;
}
图的DFS
递归和非递归
void dfs(int v)//以v开始做深度优先搜索
{
list<int>::iterator it;
visited[v] = true;
cout << v

本文介绍了如何在C++中实现图的创建、BFS(广度优先搜索)和DFS(深度优先搜索)。BFS使用队列进行非递归实现,而DFS则展示了递归和非递归两种方式。提供了从手动输入和文件读取构建图的方法,并包含测试部分。

1万+

被折叠的 条评论
为什么被折叠?



