Insertion element liste chaînée en c

kikzee Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour.,
quelqu'un peut m'explique ce code(l'insertion d'un element dans une liste )

void inserer(List **l, int val)
{
        List *tmp = NULL;
        List *laux = *l;
        List *elem = malloc(sizeof(List));
       if(elem !=NULL){
        elem->valeur = val;
        elem->suivant=NULL;
        while (laux){
            tmp=laux;
            laux=laux->suivant;
        }
        if(tmp!=NULL)
           tmp->suivant=elem;
        else


*l=elem;        }}

merci
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, quelle partie du code ne comprends-tu pas?
ne serait-il pas préférable que tu expliques ce que tu comprends, et que tu poses une question précise?
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
void inserer(List **l , int val) // ajouter val à la fin de la Liste d'adresse l
{
    List *tmp = NULL;           // tmp sera pointeur sur dernier élément
    List *laux = *l;            // pour parcours de liste, commence au premier élément
    List *elem = malloc(sizeof(List)); // allouer un nouvel élément
    if ( elem != NULL ) {       // si l'allocation s'est bien passée
        elem->valeur = val;     // initialiser l'élément
        elem->suivant = NULL;   // et le marquer comme dernier (pas de suivant)
        while ( laux ) {        // tant que l'on n'est pas au delà du dernier (laux!=NULL)
            tmp = laux;         // noter pointeur sur dernier élément vu
            laux = laux->suivant;// et passer au suivant
        }
        if ( tmp != NULL )      // on a vu des éléments
           tmp->suivant = elem; // le suivant du dernier est le nouveau venu
        else                    // sinon on n'a pas vu d'élément
           *l = elem;           // le nouveau devient le début de liste
}    }
On peut aussi faire plus court.
Et tu peux poser des questions précises.
0