Liste chaînée, insertion fin de liste

Fermé
hubert - 6 févr. 2013 à 03:39
 hubert - 8 févr. 2013 à 20:20
Bonjour,

J'ai ce petit programme :

#include <stdio.h>
#include <stdlib.h>
#include "list.h"

int     add_in_list(struct s_list **list, char *name, int age)
{
  struct s_list *new_elem;

  new_elem = malloc(sizeof(*new_elem));
  if (new_elem == NULL)
    return (1);
  new_elem->name = name;
  new_elem->age = age;
  new_elem->next = *list;
 *list = new_elem;
  return (0);
}

int     main(int ac, char **av)
{
  struct s_list *list;

  list = NULL;
  my_put_in_list(&list, "toto", 15);
  my_put_in_list(&list, "titi", 17);
  return 0;
}


Ma fonction add_in_list marche et fait une insertion au début de la liste.
Je souhaiterais juste la modifier un peu et uniquement elle pour qu'elle face une insertion à la fin de la liste, c'est possible?

Merci.

3 réponses

Utilisateur anonyme
6 févr. 2013 à 18:21
Bonjour,

Pourrais-tu poster le code de list.h ?
0
je n'arrive pas à voir ta réponse...
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 8/02/2013 à 20:09
Salut hubert,

La réponse de H4RDW4RE est là : https://forums.commentcamarche.net/forum/affich-27077377-liste-chainee-insertion-fin-de-liste#1

:-)

Si tu postes list.h dans les commentaires à la suite de la question de H4RDW4RE cela sera bien pour la lisibilité de ce topic (clique sur "Ajouter un commentaire" à la suite de la question de H4RDW4RE).


Dal
0
le lien est mort je n'arrive pas à cliquer dessus, je vais prendre un autre exemple simple, j'ai une erreur à la compilation, pourquoi?:

                                                          
#include <stdio.h> 
#include <stdlib.h> 
#include "list.h" 

int     main(int ac, char **av) 
{ 
  struct s_elem *list; 
  int           i; 

  i = 1; 
  list = malloc(sizeof(struct s_elem *)); 
   while (i < ac) 
    put_in_list_end(&list, av[i++]); 
  return (0); 
} 


voici le .h

struct          s_elem 
{ 
  char                  *str; 
  struct        s_elem  *next; 
}; 


struct s_elem *put_in_list_end(struct s_elem **list, char *str) 
{ 
  struct s_elem *elem; 

  if (!(elem = malloc(sizeof(*elem)))) 
    return (NULL); 
  elem->str = str; 
  elem->next = NULL; 
  *list->next = elem; 
  return (elem); 
}


A la compilation:

list.c:21:7: error: request for member 'next' in something not a structure or union
0