Есть матрица, каждый елемент которой прописан как елемент структуры динамически, с ссылками на соседние елементы как указатели ways (0, 1, 2, 3) - это навравления - вверх, право, низ, лево соответственно.
typedef struct mapItems{
int id, xPos, yPos, distance, visited;
struct mapItem *ways[4];
}mapItem;
Написал код который проверяет соседние елементы и записывает туда расстояние
int wave(mapItem *current, int distance){
printf(" (%d:%d)b=%d-> ", current->xPos, current->yPos, back);
int i;
for(i=0; i<4; i++){
if((current->ways[i]!=0)&&!(current->ways[i]->visited)){
if(!current->ways[i]->visited){
current->ways[i]->distance=distance+1;
}
}
}
Не могу понять как рекурсировать эту функцию что б оно проверяло поэтапно, тоесть сначала пройшло по кругу все елементы с расстоянием 1, потом волной дальше. У меня получалось, только оно идет в одну сторону. Надо как то передавать переменную внутрь что оно обработало все вокруг и можно идти дальше. Но я не могу догнать как это написать.
Ссылка на алгоритм.