0
Я реализовал Breadth First Search. Матрица смежности (adj [] []) представляет взаимосвязь между различными узлами, а узлы хранятся в узлах [].Внедрение BFS
Однако, я не получаю требуемый обход. Пожалуйста, помогите мне. Ниже мой код. Синтаксических ошибок нет. Вероятно, это логическая ошибка, которую я не могу найти при отладке.
insert(nodes[0]);
nos = nos + 1;
visited[nos] = nodes[0];
while(front != -1)
{
char ch = remove();
for(int i=0;i<n;i++)
{
if(ch == nodes[i])
{
pos = i;
}
}
for(int j=0;j<n;j++)
{
if(adj[j][pos] == 1)
{
for(int k=0;k<=nos;k++)
{
if(visited[k] == nodes[j])
{
goto end;
}
}
nos = nos + 1;
visited[nos] = nodes[j];
insert(nodes[j]);
end:continue;
}
}
}
Почему вставить 'узлы [someindex]' и затем искать его снова, вместо того, чтобы просто вставить 'someindex'? Также - почему вы вставляете 'посещение []' только из индекса 1? – Leeor
изначально nos = -1 –
Хорошо, что такое содержимое 'nodes []'? это уникально? потому что все ваши «посещенные» сравнения будут работать только тогда. Почему бы не сохранить индексы в 'visit []'? – Leeor