Liste Simplement chainée (Insertion en FIN)

Fermé
Yeah - 8 janv. 2014 à 17:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 janv. 2014 à 23:00
Bonjour,

typedef struct noeud{
        char nom[25];
        struct noeud *suivant;
}personne;
personne *premier;

void Insertion_Fin(char nom[]){
     personne *p,*save;
     p=(personne *)malloc(sizeof(personne));
     strcpy(p->nom,nom);
     p->suivant=NULL;
     if(premier==NULL) premier=p;
     else{
          save=premier;
          while(save->suivant!=NULL) save=save->suivant;
          save->suivant=p;
          }
}


je sais que tout est correct mais je voudrais savoir qu'est-ce qu'il se passe au niveau de la mémoire, car save est une variable temporaire, donc ce ligne save->suivant=p; ne sert à rien, et alors comment la variable p se fait accrocher à la fin de la chaîne .. Merci pour votre réponse ?
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
Modifié par fiddy le 8/01/2014 à 23:01
Bonjour,

La variable save est locale à la fonction donc l'emplacement mémoire prévue sera perdue lors de la prochaine allocation de la pile (par exemple déclaration de variable(s) dans la fonction suivante) après la fin de la fonction Insertion_Fin(). Tout va bien ;-))).

Cdlt,

Google is your friend
0