Как найти путь между двумя заданными узлами в C, используя BFS? - PullRequest
0 голосов
/ 27 мая 2019

как изменить алгоритм BFS, чтобы найти кратчайший путь (минимальное количество ребер) в языке Си? Я пытался сделать это сам, но это немного сложнее, чем я думал.

void BFS(struct Graph *G,struct queue *q,int layer)
{
    while(q->front)       
    {
        while(q->front && (G->adjList[q->front->v]->layer == layer))   
        {
            int v = dQ(q);
            printf("%d ",v);   //afisare
            struct node *head = G->adjList[v]->next;
            while(head)
            {
                if(G->adjList[head->v]->marked)
                {
                    head = head->next;
                    continue;
                }
                G->adjList[head->v]->layer = layer + 1;
                G->adjList[head->v]->marked = 1;
                insertQ(q,head->v);
                head = head->next;
            }
        }
        layer++;
        printf("\n");
    }
}

Может кто-нибудь помочь мне понять, как это работает, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...