J'essaie de lancer un algorithme BFS dans une matrice pour obtenir le chemin le plus court entre ma position et le premier élément accessible trouvé par le BFS. Matrice est constituée par des noeuds définis comme suit:Définition d'un paramètre struct avec le type de la structure
struct node {
int distance = -1;
node parent;
Pos position;
//Direction to get into the actual node from the parent's position.
Dir direction;
Cell cell;
};
je besoin d'avoir une instance du noeud parent (celui précédemment visitée et avec moins de la distance du noeud initial que le noeud réel) pour tracer le chemin le plus rapide en arrière au noeud d'origine une fois l'élément désiré trouvé. Mais il semble que nœud parent; déclaration renvoie une erreur, il est donc possible de déclarer un élément de la structure avec le type de la structure elle-même? ou dois-je le déclarer comme un pointeur sur l'élément?
Vous avez ici les erreurs:
error: field has incomplete type 'node'
node parent;
^
note: definition of 'node' is not complete until the closing '}
struct node {
^
vous remercie.
Vous devez utiliser un pointeur. Un noeud ne peut pas contenir un autre objet noeud, car ce noeud contiendrait lui-même un autre noeud, qui contiendrait lui-même un autre noeud, qui contiendrait lui-même un autre noeud, qui contiendrait lui-même un autre noeud qui contiendrait lui-même un autre nœud, qui contiendrait lui-même un autre nœud, qui contiendrait lui-même un autre nœud, qui contiendrait lui-même un autre nœud, qui contiendrait lui-même un autre nœud, qui contiendrait lui-même un autre nœud qui contiendrait un autre nœud, etc. –
Si vous pouviez faire cela - avoir une structure à inclure - réfléchir à la façon dont vous pourriez calculer la taille d'une telle structure et ce que cela implique .... –
Choisissez la langue _one_. –