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 :

Ma liste à double sens n'affiche que la première et dernière valeur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut Ma liste à double sens n'affiche que la première et dernière valeur
    bonjour à tous, je m'exerce en ce moment sur les listes chaînées mais j'ai un problème et je n'arrive pas à le localiser. Quand je veux afficher ma liste, j'obtiens seulement la première et dernière valeur insérée, pouvez vous me donner des pistes ? voici le code.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #include <stdio.h>
    #include <stdlib.h>
     
    struct elem{
        int val;
        struct elem *suiv;
        struct elem *prec;
    };
     
    struct pointeur {
    	   struct elem *der;
    	   struct elem *prem;
    	   int taille;
    };
     
    void init(struct pointeur *p);
    struct pointeur* ajouDeb(struct pointeur *p, int val);
    struct pointeur* ajouFin(struct pointeur *p,  int val);
    void affiche(struct pointeur *p);
     
    int main(void) 
    {
        struct pointeur *maListe = malloc(sizeof(struct pointeur));
     
        init(maListe);
        int i;
     
        for(i = 0; i <= 5; i++)
            maListe = ajouFin(maListe, i);
     
        affiche(maListe);
     
    return 0;
    } 
     
    void init(struct pointeur *p)
    {
    	    p->der = NULL;
    	    p->prem = NULL;
    	    p->taille = 0;   
    }
     
    struct pointeur* ajouDeb(struct pointeur *p,  int val)
    {
    	   struct elem *nouv = malloc(sizeof(struct elem));
     
    	   if(!nouv) exit(-1);
     
    	   nouv->val = val;
    	   nouv->suiv = p->prem;
    	   nouv->prec = NULL;
     
    	   if(p->prem != NULL)
    	   {
    	       p->prem->prec = nouv;
     
    	   } else {
     
    	   	    p->prem = nouv;
    	   	    p->der = nouv;
    	   }
     
    	   p->taille++;
     
    	   return p;
    }
     
    struct pointeur* ajouFin(struct pointeur *p, int val)
    {
        struct elem *nouv = NULL;
        nouv = malloc(sizeof(struct elem));
     
        if(!nouv){ exit(-1); } 
     
        nouv->val = val;
        nouv->suiv = NULL;
        nouv->prec = p->der;
     
        if(p->der) 
        {
        	   p->der->suiv = nouv;
        }
        else
        {
        	   p->prem = nouv;
        	   p->der = nouv;
        }
     
        p->taille++;
     
        return p;
     
    } 
     
    void affiche(struct pointeur* p)
    {
        struct elem* tmp = p->prem;
     
    	   while(tmp)
    	   {
    	   	    printf("valeur = %d ",  tmp->val);
    	   	    tmp = tmp->suiv;
    	   }
    }
    merci à vous.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Dans ajoutFin(), La ligne p->der = nouv; doit être sortie du if: Elle s'applique aussi bien quand la liste est vide que quand elle a déjà des éléments.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut
    Génial ! ça marche impeccable, grand merci à toi.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2014, 12h44
  2. [WD14] le combo m'affiche que la premiere valeur de la liste
    Par sdou9a dans le forum WinDev
    Réponses: 4
    Dernier message: 19/10/2011, 16h13
  3. Réponses: 0
    Dernier message: 06/01/2011, 14h48
  4. [WD14] Libellé n'affiche que la première lettre
    Par odoine dans le forum WinDev
    Réponses: 7
    Dernier message: 01/09/2009, 18h37
  5. Pagination... N'affiche que la première page
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2006, 23h28

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