Bonjour,
dans ma vaine tentative de faire une liste chainée, dont voici une partie du code, je suis confronté à un problème en voici le message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part line 16 assignment to Noeud * from incompatible pointer type struct Noeud *plus que la solution, c'est l'explication qui m'intéresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stddef.h> typedef struct { int valeur; struct Noeud* suivant; } Noeud; void ajouter_noeud (Noeud tête, Noeud n) { Noeud* tmp = &tête; while(tmp->suivant != NULL) { tmp = tmp->suivant; } // reste du code }
Dans ma struct Noeud je référence le noeud suivant, c'est à dire que j'ai une définition récursive de Noeud. Le seul moyen, semblerai t-il est de crée un pointeur sur une struct Noeud.
Pour pouvoir parcourir ma liste, le pointeur tmp, de type Noeud* reçoit, la valeur pointée par suivant de type Struct Noeud*. Il y a donc une incompatibilité de type.
Mais je n'arrive pas résoudrai cette incompatibilité.
Ce que j'ai essayer:
un cast (Noeud) suivant;
une autre "solution" suggérée remplacer la définition de la struct Noeud par:
aucune ne fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct Noeud noeud; struct Noeud { int valeur; Noeud *suivant; };
Qu'elles explications me permettrai de résoudre mon problème ?
Partager