Insertion element liste chaînée en c

Fermé
kikzee Messages postés 70 Date d'inscription dimanche 6 mars 2016 Statut Membre Dernière intervention 16 décembre 2020 - Modifié le 4 nov. 2018 à 20:09
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 5 nov. 2018 à 01:53
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 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
4 nov. 2018 à 19:58
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
5 nov. 2018 à 01:53
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