IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème avec structure arbre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut Problème avec structure arbre
    Bonjour,

    Voila j'ai encore un soucis qui est le suivant, j'ai une fonction qui me permet de libérer un arbre seulement voila elle n'arrête pas de boucler sur le fils gauche et je n'arrive vraiment pas à voir pourquoi
    La voici:

    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
    void libere_arbre (arbre *p)
    {
        if ((*p)->gauche != NULL)
        {
            libere_arbre (&(*p)->gauche);
        }
        if ((*p)->droite != NULL)
        {
            libere_arbre (&(*p)->droite);
        }
        free (*p);
        *p = NULL;
     
        return ;
    }
    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    C'est pas évident à voir comme ça. Il faudrait que tu postes le code en entier, ou au moins une partie compilable.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    C'est vrai que cela manque un peu de code.

    Au fait, j'espère que arbre est un pointeur sur structure (et pas une structure).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Oui puisque voici la structure que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct charArbre
    {
            char data; 
            struct charArbre *gauche; 
            struct charArbre *droite;
    } *arbre;
    Le problème est que faire un main demande que je fasse un fichier assez énorme avec beaucoup de fonctions et que le soucis que j'ai ce produit dans un cas vraiment particulier. Je vais essayé de le résumer. Je créer un arbre contenant le contenu d'une liste chaîné ensuite j'utilise l'arbre pour faire quelque manipulation (sans le modifier puisque je vérifie son contenu avant et après le traitement et le résultat est même) et lorsque je fais "libere_arbre(&a)" ma fonction boucle tout le temps dans le test:
    J'espère avoir été assez clair.

  5. #5
    Membre chevronné
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Par défaut
    Elle boucle sur la libération du fils gauche parce que la condition de fin n'est pas prise en compte (et donc ça ne passe jamais au deuxieme appel récursif pour le fils droit).

    Es-tu sûr de bien manipuler le free() ?
    Un free(p) ne suffit-il pas ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Non car c'est un pointeur sur mon arbre que je passe à ma fonction et non l'arbre tout court. Et oui la raison que tu as donné est la bonne mais c'est justement le pourquoi que je n'arrive pas à saisir...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les arbres
    Par madjidri dans le forum C
    Réponses: 2
    Dernier message: 06/12/2007, 01h09
  2. Problème avec structure dans une fonction
    Par Saliman dans le forum C
    Réponses: 2
    Dernier message: 22/11/2007, 11h45
  3. Problème avec un arbre
    Par coco38 dans le forum Prolog
    Réponses: 6
    Dernier message: 03/11/2007, 16h21
  4. Problème avec les arbres
    Par isoman dans le forum C
    Réponses: 6
    Dernier message: 23/02/2007, 18h51
  5. [Tableaux] Problème avec un arbre de sélection
    Par grumly22 dans le forum Langage
    Réponses: 24
    Dernier message: 29/05/2006, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo