我试图写一个BFS算法,其中nod是第一个节点,viz是一个向量,元素为0表示未访问,1表示已访问,a是邻接矩阵,n是节点数,q是队列。但是,无论出于什么原因,我都不明白,代码无法正常工作。你知道为什么吗?我会很感激。 这是我的代码:
void BFS(int nod, int viz[], int a[100][100], int n, int q[], int *f, int *r )
{
for(int i = 1; i <= n; i++)
{
if(a[nod][i] && !viz[i])
{
(*r)++;
q[(*r)] = i;
}}
if((*f) <= (*r))
{ f++;
viz[q[(*f)]] = 1;
printf("Am vizitat nodul %d \n", *f);
BFS(q[(*f)],viz,a,n,q,&f,&r);
}
}
我在main中这样称呼它:
BFS(nod1,viz,a,n,q,&f,&r);