对上面的无向图进行邻接矩阵的构造,访问状态的初始化,以及结点数据的初始化。
#include <iostream>
using namespace std;
//无向图的邻接矩阵
int Map[6][6] = {
{0,1,1,0,0,0},
{1,0,0,1,1,0},
{1,0,0,0,0,1},
{0,1,0,0,1,0},
{0,1,0,1,0,0},
{0,0,1,0,0,0}};
//用来记录某个点是否被访问,没有被访问设置为0,被访问了设置为1
int IsVisible[6] = { 0 };
//无向图的结点数据
char Node[6] = { 'A','B','C','D','E','F'};
//进行深度优先搜索,对一个结点进行深度优先搜索时:
//(1)先输出该结点数据
//(2)将该结点的访问状态设置为1
//(3)逐一判断与该结点相邻的节点是否被访问过
//(4)如果没有被访问过,则对相邻结点进行深度优先遍历
//(5)否则continue
void dfs(int index)
{
cout << Node[index] << " ";
IsVisible[index] = 1;
for (int i = 0; i < 6; i++)
{
if (Map[index][i])
{
if (IsVisible[i] == 0)
{
dfs(i);
}
else
{
continue;
}
}
else
{
continue;
}
}
}
int main()
{
//从根结点开始进行深度优先搜索
dfs(0);
system("pause");
return 0;
}
对该图像图进行深度优先搜索的结果应该为:A,B,D,E,C,F
有问题请留言,共同学习,共同成长... ...