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 :

les Listes chainees


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut les Listes chainees
    C'est encore moi. Mon programme principal plante systematiquement apres 5 passage dans une fonction. Il semble que le probleme vienne des listes. Voici comment j'ai declare mes listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct dlist{
    int xaxis;
    int number;
    struct dlist *next;
    };
    typedef struct dlist * dlist;

    Et voici la fonction qui me permet d'ajouter un element a une liste:
    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
     
    dlist additem(dlist ll, int xx, int nn)
    {
    dlist nl;
     
    if((nl=malloc(sizeof(dlist))) == NULL)
        {
        printf("dlist : malloc failed\n");
        exit(1);
        }
     
    nl->xaxis=xx;
    nl->number=nn;
    nl->next=ll;
     
    return(nl);
    }
    J'aimerais savoir ou est mon (impardonnable) erreur.

    Merci beaucoup.

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Bonjour,

    Ton appel à malloc est faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((nl=malloc(sizeof(dlist))) == NULL)
    dlist est un pointeur vers une structure (c'est pas bien de masquer ce genre de chose...)

    Du coup, tu n'alloues pas la bonne taille, préfére:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((nl=malloc(sizeof(*nl))) == NULL)
    Jc

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Cela veut donc dire qu'il faut que je change mon instruction typedef en :

    typedef struct dlist dlist; ???

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par uknico
    Cela veut donc dire qu'il faut que je change mon instruction typedef en :

    typedef struct dlist dlist; ???
    Oui.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    utilise plutôt pour la fonction exit les macro disponibles dans stdlib.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exit (EXIT_SUCCESS) ;
    exit (EXIT_FAILURE);

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Citation Envoyé par fearyourself
    dlist est un pointeur vers une structure (c'est pas bien de masquer ce genre de chose...)

    Jc
    Emmanuel n'avait pas fait toute une liste des erreurs à éviter en C dont celle-ci ?

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Mat.M
    Emmanuel n'avait pas fait toute une liste des erreurs à éviter en C dont celle-ci ?
    http://emmanuel-delahaye.developpez.com/goret.htm

Discussions similaires

  1. probleme sur les listes chainees
    Par guipe dans le forum Débuter
    Réponses: 19
    Dernier message: 21/04/2010, 15h49
  2. Les listes chainees, ajout et suppression de maillons
    Par student_ dans le forum Débuter
    Réponses: 2
    Dernier message: 11/02/2010, 20h16
  3. Réponses: 6
    Dernier message: 16/02/2008, 21h53
  4. problème de pointeur avec les listes chainees
    Par innosang dans le forum C
    Réponses: 9
    Dernier message: 30/12/2005, 15h46
  5. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 17h22

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