本文内图的存储方式是邻接矩阵,不过BFS的具体实现代码与图的存储结构无关。
BFS的遍历方法,与树的层次遍历几乎一样。
在实现树的层次遍历时,需要找到结点的所有子结点
在实现BFS时,需要找到该结点的所有邻接点
所以在实现BFS之前,需要先学习 寻找第一个邻接点(FirstNeighbor)与 寻找下一个邻接点(NextNeighbor) 如何实现
(这里的图存储的是char类型的变量)
目录
寻找a的第一个邻接点
寻找a的下一个邻接点
BFS的实现
寻找a的第一个邻接点
因为是char类型的变量,所以在刚开始需要将此变量a在邻接矩阵中的位置找到。找到了返回数组中的位置,找不到返回-1.
//寻找位置
int find(Adj_Matrix q, char a)
{
for (int i = 0; i < q.NumData; i++)
if (q.data[i] == a)
return i;
return -1;
}
在邻接矩阵中,寻找临界点只需遍历a所在的行数,判断边是否存在,存在则返回所在的位置,不存在则返回-1.
从而找到第一个邻接点.
//寻找第一个临界点
int FirstNeighbor(Adj_Matrix q, char a)
{
int m = find(q, a);
if (m == -1)
return -1;
for