J'ai fait un arbre binaire où il y a essentiellement trois niveaux de struct:structures de données récursives vont mal - types incompatibles lors de l'attribution Liste à partir du type struct * l
typedef struct l {
char n[15];
struct l *next;
} List;
typedef struct {
char rname[20];
char lname[20];
List number;
} info;
typedef struct tree {
info thisnode;
struct tree *left;
struct tree *right;
} Tree;
et sur cette ligne de code
t->thisnode.number = t->thisnode.number.next;
Je reçois l'erreur mentionnée dans le titre
Normalement, avec des structures de données récursives ces type de tâches attribuées, en dépit de la prochaine ayant struct de type * l. Quelqu'un pourrait-il m'aider à comprendre pourquoi dans ce cas, cela ne fonctionne pas?
Aussi j'aurais instinctivement la ligne ci-dessus comme
t->thisnode.number = t->thisnode.number->next;
Mais mon compilateur semble comme ça encore moins.
Hmmm J'ai fait comme vous avez suggéré et changé le nombre d'infos en Liste * et cela me permet de faire l'assignation, et m'a débarrassé de beaucoup d'erreurs de compilateur que je recevais (une fois que j'ai changé tous les numéros. nombre-> n). Mais dans ma fonction principale, je reçois un défaut seg après avoir inséré une entrée, alors qu'avec le même code avant d'ajouter la structure List, je n'avais pas ce problème. Je vais jouer un peu avec ça, mais j'ai l'impression que C n'aime pas cette structure de 3 niveaux, ou est-ce que ça va? – Joe
Eh bien, il semble que j'ai oublié de malloc lorsque «numéro» lors de l'attribution de numéro-> n [x] et cela semble avoir corrigé le défaut seg. – Joe