0
votes

C - Défaut de segmentation (noyau largué)

Je viens de commencer à apprendre des arbres et je veux l'implémenter. Ce code compile, mais après avoir exécuté, je reçois la défaillance de la segmentation. J'ai

​​ Il y a 2 fonctions

1. "Nouveau" Ceci créera un nouveau nœud pour ajouter à l'arborescence

2. "Insérer" Cela insérera des données à l'arborescence et ceci est une fonction récursive

Je veux juste vérifier que les données stockent donc j'ai essayé d'imprimer la valeur dans le nœud racine mais Ensuite, je reçois la défaillance de la segmentation

J'ai vérifié tout ce qui semble être correct mais je ne sais pas ce qui se passe mal xxx

Je m'attends à ce que la sortie soit 15, mais obtenir une erreur de segmentation.


0 commentaires

3 Réponses :


0
votes

Tout d'abord, vous voulez certainement changer struct noeud * newnode = (noeud de structure *) malloc (graphique de structure *)); à noeud de structure * newnode = (struct noeud *) MALLOC (taille de la structure (noeud de structure)); , suppression de l'étoile dans la taille de la taille de la taille de la taille de la taille de la taille de la taille de 8 octets quelle que soit la taille de la structure;)

Ensuite, vous obtenez une erreur Stackoverflow, mais je vous laisse chercher celui-là; p


0 commentaires

1
votes

Vous ne stockez pas les données nulle part. Changer nouveau (données); sur root = nouveau (données); dans la fonction insérer

Un autre bug est que noeud de structure * newnode = (noeud de structure *) malloc (graphique (graphique de structure *)) doit être noeud de structure * NEWNODE = MALLOC (Tailleof (* NEWNODE) ) . Cela corrige tous les deux un bug et vaut mieux pour d'autres raisons.

Aussi, void principal () doit être int Main () .


0 commentaires

1
votes

Vous devez changer l'expression malloc. Vous devriez le nœud Malloc struct et non le nœud de structure *. De plus, vous devriez changer le vide principal sur INT Main


0 commentaires