Insertion element liste chaînée en c
kikzee
Messages postés
87
Statut
Membre
-
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Bonjour.,
quelqu'un peut m'explique ce code(l'insertion d'un element dans une liste )
merci
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
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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? -
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.