图的创建
- 手动输入,并以节点数作为输入结束标志
- 从文件读取,文件的从第二行开始,每一行结束都要有节点数作为结束
图的存储:
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<