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 :

[Liste chainée] Ptit morceau de code à comprendre


Sujet :

C

  1. #1
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut [Liste chainée] Ptit morceau de code à comprendre
    Bonjour,
    Y'a un ptit morceau de code que je ne comprend pas (je vous le met apres le code complet) :

    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 <string.h>
    #include <malloc.h>
     
    #define SMALLOC(X) (X*)malloc(sizeof(X))
     
    struct Tete *CreeTete(void);
    struct Data *AffecteData(int Lig, int Col, char *Lib);
    struct Noeud *CreeNoeud (struct Noeud *Prec, struct Noeud *Suiv, struct Data *Don);
    void AjoutDataFinListe(struct Tete *PtrTete, struct Data *Don);
    void AfficheData(struct Tete *PtrTete);
     
    struct Tete
    {
    	struct Noeud *Premier;
    	struct Noeud *Dernier;
    	int NbrNoeuds;
     
    };
     
    struct Noeud
    {
    	struct Noeud *Prec;
    	struct Noeud *Suiv;
    	struct Data *Don;
     
    };
     
    struct Data
    {
    	int Lig;
    	int Col;
    	char Lib[50];
    };
     
    void main()
    {
     struct Tete *PtrTete;
     PtrTete = CreeTete();
     AjoutDataFinListe(PtrTete, AffecteData(10,10,"OYE2"));
     //AfficheData(PtrTete);
     AjoutDataFinListe(PtrTete, AffecteData(10,10,"OYE3"));
     AfficheData(PtrTete);
      getchar();
    }
     
    struct Tete *CreeTete(void)
    {
    	struct Tete *Ptr;
    	Ptr = SMALLOC(struct Tete);
    	Ptr->NbrNoeuds = 0;
    	Ptr->Premier = Ptr->Dernier = NULL;
    	return(Ptr);
    }
     
    struct Data *AffecteData(int Lig, int Col, char *Lib)
    {
    	struct Data *Ptr;
    	Ptr = SMALLOC(struct Data);
    	Ptr->Lig = Lig;
    	Ptr->Col = Col;
    	strcpy(Ptr->Lib, Lib);
    	return(Ptr);
    }
     
    struct Noeud *CreeNoeud (struct Noeud *Prec, struct Noeud *Suiv, struct Data *Don)
    {
    	struct Noeud *Ptr;
    	Ptr = SMALLOC(struct Noeud);
    	Ptr->Prec = Prec;
    	Ptr->Suiv = Suiv;
    	Ptr->Don = Don;
    	return (Ptr);
    }
     
    void AjoutDataFinListe(struct Tete *PtrTete, struct Data *Don)
    {
    	struct Noeud *Ptr;
    	if (!PtrTete->Dernier)
    	{
    		Ptr = CreeNoeud(NULL, NULL, Don);
    		PtrTete->Premier = PtrTete->Dernier = Ptr;
    		PtrTete->NbrNoeuds++;
    	}
    	else
    	{
    		Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don);
    		PtrTete->Dernier->Suiv = Ptr;
    		PtrTete->Dernier = Ptr;
    		PtrTete->NbrNoeuds++;
    	}
    }
    void AfficheData(struct Tete *PtrTete)
    {
    	struct Noeud *Suivant;
    	Suivant = PtrTete->Dernier;
    	while (Suivant)
    	{
    		printf("%s", Suivant->Don->Lib);
    		printf("%d", PtrTete->NbrNoeuds);
    		Suivant = Suivant->Suiv;
    	}
    }
    Voici la partie du code que je ne comprend pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    else
    	{
    		Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don);
    		PtrTete->Dernier->Suiv = Ptr;
    		PtrTete->Dernier = Ptr;
    		PtrTete->NbrNoeuds++;
    	}
    Est-ce que cette partie est correct deja ? Si oui pouvez me l'expliquer car pour moi le "PtrTete->Dernier = Ptr" va écraser "PtrTete->Dernier->Suiv = Ptr" (donc il ne sert à rien du coup !).
    La j'avoue que je galère !

    Merci d'avance pour les explications
    ++
    ShinJava

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Voir les commentaires
    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
     
    void AjoutDataFinListe(struct Tete *PtrTete, struct Data *Don)
    {
       struct Noeud *Ptr;
       if (!PtrTete->Dernier)  /* s'il n'y a pas de Dernier, c'est que la liste est vide => on initialise tout comme il faut  */
       {
          Ptr = CreeNoeud(NULL, NULL, Don);
          PtrTete->Premier = PtrTete->Dernier = Ptr;
          PtrTete->NbrNoeuds++;
       }
       else  /*  il existe un dernier element : on l'ajoute a la suite */
       {
          Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don);
          PtrTete->Dernier->Suiv = Ptr;  /* on l ajoute à l'ancien dernier  */
          PtrTete->Dernier = Ptr;  /* on met à jour le dernier element de la liste */
          PtrTete->NbrNoeuds++;  /* augmente le nombre de noeud */
       }
    }
    En fait, on à un pointeur independant qui pointe sur le dernier element : il faut l'actualiser à chaque fois qu'on ajoute un element.

    ++
    Pouic
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    entièrement d'accord, il n'a rien à faire là. (enfin si je suis bien reveillé )

    [edit]bon bah je n'était pas reveiller [/edit]

  4. #4
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Merci pour la réponse mais j'ai vraiment du mal.
    Schématiquement j'ai l'impression que ca cole pas !
    Pouvez-vous m'expliquer pourquoi mon raisonement est faux ????
    Le voici :

    Dans le cas ou le dernier element existe :
    On rentre dans le else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don);
    La c'est ok, y'a pas de souci !
    Ptr devient ainsi :

    ----------------------------------------
    |PtrTete->Dernier |NULL |Donnée |
    ----------------------------------------

    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier->Suiv = Ptr;
    La pour moi, PtrTete->Dernier->Suiv est NULL au départ et on lui met le contenu de PTR
    Donc ca nous fait un schéma comme qui suit :

    PtrTete

    ----------------------------------
    |Premier |Dernier |NbrNoeud|
    ----------------------------------

    PtrTete->Dernier
    ------------------------
    |NULL |Ptr |Donnée |
    ------------------------

    Donc PtrTete->Dernier->Suiv:
    ----------------------------------------
    |PtrTete->Dernier |NULL |Donnée |
    ----------------------------------------
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier = Ptr;
    Donc PtrTete->dernier qui était :
    --------------------
    |NULL |Ptr |Donnée |
    --------------------

    Devient :
    ---------------------------------
    |PtrTete->Dernier |NULL |Donnée |
    ---------------------------------

    Donc on efface le Ptr la ???
    Qu'est ce qui va pas dans mon raisonement ??
    Merci de votre patience !

    ++
    ShinJava

  5. #5
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Non.

    Quand tu crées ton noeud, il n'est pas encore "relié" à la chaine.
    Donc d'un coté tu as ta liste dont le premier elemetn est pointé par Premier, et le dernier par Dernier.

    A coté, tu as ton nouveau noeud pour lequel on a dit (en le créant) que son predecesseur etait l'actuel Dernier, et que son sucesseur etait NULL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier->Suiv = Ptr;
    La, on rattache le nouveua noeud a la liste. Mais du coup, le pointeur global Dernier ne pointe plus sur le dernier element de la liste, masi l'avant dernier ! Il faut donc le mettre à jour, ce qui est fait par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier = Ptr;
    En effet, le dernier element est le noeud qu'on vient juste de créer.

    Desolé, j ai eu la flemme de faire les ptits dessins
    J espere que tu as compris
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  6. #6
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Pas de problème pour les dessins
    Bon je reprend ce que tu me dit point par point :

    Non.

    Quand tu crées ton noeud, il n'est pas encore "relié" à la chaine.
    Donc d'un coté tu as ta liste dont le premier elemetn est pointé par Premier, et le dernier par Dernier.

    A coté, tu as ton nouveau noeud pour lequel on a dit (en le créant) que son predecesseur etait l'actuel Dernier, et que son sucesseur etait NULL.
    Ok la je comprend !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier->Suiv = Ptr;
    La, on rattache le nouveua noeud a la liste. Mais du coup, le pointeur global Dernier ne pointe plus sur le dernier element de la liste, masi l'avant dernier !
    Oui la jsuis d'accord aussi , PtrTete->Dernier->Suiv ne pointe plus dans le vide (NULL) mais pointe sur Ptr.


    Il faut donc le mettre à jour, ce qui est fait par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier = Ptr;
    En effet, le dernier element est le noeud qu'on vient juste de créer.
    La je BUG !
    On parle bien du même PtrTete du début la ?
    Car Ptr->Dernier->Suiv va devenir NULL la, alors que juste avant il pointer sur PTR... C'est bizzare ! je comprend pas

    Merci d'avance pour votre patience (désolé)

    ++
    ShinJava

  7. #7
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Ok. (au fait, tu peux me tutoyer )

    Va pour les petits dessins alors :

    Ta liste avant l'ajout du nouveau noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Premier                                    Dernier
        ||                                             ||
        \/                                             \/
    ---------       -------------                  ----------
           --|--->|             | ................   |        --|-->NULL
    ---------       -------------                  ----------
    On ajoute le noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Premier                                    Dernier
        ||                                             ||
        \/                                             \/
    ---------       -------------                  ----------      ---------------------------------
           --|--->|             | ................   |        --|-->|    Nouveau noeud    --|-->NULL
    ---------       -------------                  ----------      ---------------------------------
    Mais tu vois bien le probleme avec Dernier. Donc, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier = Ptr;
    On fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Premier                                                            Dernier
        ||                                                                      ||
        \/                                                                      \/
    ---------       -------------                  ----------      ---------------------------------
           --|--->|             | ................   |        --|-->|    Nouveau noeud   --|-->NULL
    ---------       -------------                  ----------      ---------------------------------
    On ne modifie pas le dernier element : Dernier est un pointeuir global qui sert à avoir la fin de la liste sous la main en cas d'ajout : on a toujours Premier pour acceder à tous les elements.
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  8. #8
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    salut

    voici par exemple une situation de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              +----+   +----+   +----+   +----+
              |Don |   |Don |   |Don |   |Don |
    Premier-->|Suiv|-->|Suiv|-->|Suiv|-->|Suiv|-->NULL
       NULL<--|Prec|<--|Prec|<--|Prec|<--|Prec|<--Dernier
              +----+   +----+   +----+   +----+
    Quand tu fait : Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don); on obtient ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
              +----+   +----+   +----+   +----+
              |Don |   |Don |   |Don |   |Don |
    Premier-->|Suiv|-->|Suiv|-->|Suiv|-->|Suiv|-->NULL
       NULL<--|Prec|<--|Prec|<--|Prec|<--|Prec|<--Dernier
              +----+   +----+   +----+   +----+
                                            ^
                                            |               +----+
                                            |               |Don |
                                            |               |Suiv|-->NULL
                                            +---------------|Prec|
                                                            +----+ 
                                                              ^
                                                              |
                                                      PTR-----+
    Ensuite on fait : PtrTete->Dernier->Suiv = Ptr; ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
              +----+   +----+   +----+   +----+
              |Don |   |Don |   |Don |   |Don |
    Premier-->|Suiv|-->|Suiv|-->|Suiv|-->|Suiv|----------------+
       NULL<--|Prec|<--|Prec|<--|Prec|<--|Prec|<--Dernier      |
              +----+   +----+   +----+   +----+                |
                                            ^                  V
                                            |               +----+
                                            |               |Don |
                                            |               |Suiv|-->NULL
                                            +---------------|Prec|
                                                            +----+ 
                                                              ^
                                                              |
                                                      PTR-----+
    Et enfin PtrTete->Dernier = Ptr; qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
              +----+   +----+   +----+   +----+
              |Don |   |Don |   |Don |   |Don |
    Premier-->|Suiv|-->|Suiv|-->|Suiv|-->|Suiv|----------------+
       NULL<--|Prec|<--|Prec|<--|Prec|<--|Prec|                |
              +----+   +----+   +----+   +----+                |
                                            ^                  V
                                            |               +----+
                                            |               |Don |
                                            |               |Suiv|-->NULL
                                            +---------------|Prec|<--Dernier
                                                            +----+ 
                                                              ^
                                                              |
                                                      PTR-----+

  9. #9
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Alors tout d'abord, merci à vous 2 pour vos schemas !
    Désolé pour la réponse tardif ! Mon cerveau s'est mis en mode usine à gaz !
    Pouic : j'ai du mal avec ton dernier schema mais jcrois avoir saisi le truc !
    Jmv : Il est terrible ton schema, sur Papier j'avais otbenu un truc différent !


    Donc le probleme de départ est que je n'avais pas trop saisi ce qu'était réelement une liste chainée.

    A partir de vos dessins voila ce que je pense avoir compris :

    1/La structure TETE permet de definir le premier element de la Liste et le dernier element de la liste (donc le noeud suivant pointe forcement sur NULL pour fermer la LISTE).
    J'ai bon ?

    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier->Suiv = Ptr;
    Ici, le Noeud Suivant du dernier Element de la Liste pointe sur Ptr et non plus sur NULL. Donc on a comme element précédent, l'ancien dernier element.
    J'ai bon ?

    3/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PtrTete->Dernier = Ptr;
    C'est cette partie que j'avais pas saisi.
    Maintenant je vois la chose différement : Le contenu de Ptr est defini comme etant le dernier Noeud de la liste. Du coup, le noeud précédent correspond a l'ancien dernier Noeud et le noeud suivant du dernier element pointe sur NULL (car ptr->suiv = NULL) et c'est la fin de la liste !
    J'ai bon ?

    Est-ce que j'ai tout bon ?
    Je pense que ca doit l'etre, car je commence a comprendre la logique du truc !
    Merci de confirmer ou bien de rajouter des infos s'il le faut.
    Jmv merci pour le dessin ! ca du etre long à faire, en tout cas ca devient plus clair avec ca !
    Pouic je te remercie enormement pour ta patience et tes explications, tu m'as vachement bien guidé et pas à pas, ca c'est cool ! Merci encore !

    Donc si vous me dites que j'ai bien compris, ca sera résolu
    ++
    ShinJava

  10. #10
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    AHHH
    PS : y'a une petite erreur dans 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
     
      if (!PtrTete->Dernier) 
       { 
          Ptr = CreeNoeud(NULL, NULL, Don); 
          PtrTete->Premier = PtrTete->Dernier = Ptr; 
          PtrTete->NbrNoeuds++; 
       } 
       else 
       { 
          Ptr = CreeNoeud(PtrTete->Dernier, NULL, Don); 
          PtrTete->Dernier->Suiv = Ptr; 
          PtrTete->Dernier = Ptr; 
          PtrTete->NbrNoeuds++; 
       }
    c'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if (!PtrTete->Dernier)
    Mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if (!PtrTete->NbrNoeuds)
    Ca ne change rien aux explications ? , jme suis pas encore penché dessus, je viens juste de le remarquer, jverrais ca apres manger si personne ne répond ! vraiment désolé


    EDIT : ok c'est bon , ce petit changement n'altère pas le bon fonctionement du code.

  11. #11
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Bon, je crois que t'as compris le principe, mais t'as les idées encore floues sur certains détails, peut-être qu'un peu de lecture d'un bon bouquin sur le sujet ne te ferait pas de mal
    a++

  12. #12
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Effectivement, tu as saisi le principe
    Mais comme te le fait remarquer jmv, un petit coup d'oeil sur un cours en rapport avec les listes chainees ne pourra que t'etre benefique

    Tu penses au tag [Résolu] ?

    ++
    Pouic
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  13. #13
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Merci enormement à vous 2 !
    Je vais suivre vos conseils

    ++
    ShinJava

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/12/2013, 00h56
  2. Réponses: 3
    Dernier message: 30/01/2010, 11h56
  3. copie de liste chainée
    Par tomsoyer dans le forum C++
    Réponses: 15
    Dernier message: 31/08/2004, 18h20
  4. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05
  5. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25

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