下面是代码实现部分,感兴趣再在下面看相关知识
//代码实现部分
#include
using namespace std;
#define M 100000
int p = 1;//记录数组队列的当前下标,头指针
int s = 0;//记录数组队列下标的记忆下标,尾指针
int f[M];//数组队列
//dfs遍历
void dfs(int);
//bfs遍历
void bfs(int);
int G[6][6] = {
{ M, 1, 1, 1, M, M },
{ 1, M, 1, M, 1, M },
{ 1, 1, M, 1, 1, 1 },
{ 1, M, 1, M, M, 1 },
{ M, 1, 1, M, M, 1 },
{ M, M, 1, 1, 1, M }
};
bool d1v[6] = { false };//标志数组,dfs
bool d2v[6] = { false };//标志数组,bfs
//图的遍历
//深度优先搜索dfs
//一直找一条路径,找到终端还没找完。 然后返回上一个节点再找,找完再返回
void dfs(int m)//采用递归形式完成
{
d1v[m] = true;
for (int w = 0; w<6; w++)
{
if (G[m][w] != M&&!d1v[w])
{
cout << "(" << m + 1 << ',' << w + 1 << ")" << " ";
dfs(w);
}
}
}
//广度优先搜索bfs
//先把第一节点的有连接的节点都入队列,然后弹出第一节点,寻找队列第一元素,循环下去
voi
c++中图的遍历,dfs和bfs的简单实现
最新推荐文章于 2023-01-03 23:18:55 发布