Structures, listes chainees en C
nulle00
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
George -
George -
Bonjour,
Je programme en c et je debute avec les stuctures. J'ai un peu de mal a comprendre exactement comment ca fonctionne, je suis en train de resoudre un exercice et disons que je bloque sur un certain point.. En fait j'ai une liste chainee qui est donc composee de plusieurs stuctures ayant les memes champs et un de ces champs est lui meme une liste chainee comprenant donc plusieurs structures.
Avec un exemple ca sera plus simple: disons qu'on cree une liste de personnes avec des details sur eux:
J'aimerai en fait par exemple rajouter une 2eme adresse a une personne specifique, disons que j'ai une commande:
ajouterAdresse <nom> <age> <numeroDeRue> <rue> <ville>
Comment je fais pour acceder au champ adresse d'une personne specifique et ajouter une adresse a cette liste chainee?
Je sais ecrire une fonction qui me trouve l'emplacement de la structure ayant le nom et l'age entres par l'utilisateur mais apres je bloque pour ajouter une structure a la 2eme liste chainee..
Merci de m'aider!
Je programme en c et je debute avec les stuctures. J'ai un peu de mal a comprendre exactement comment ca fonctionne, je suis en train de resoudre un exercice et disons que je bloque sur un certain point.. En fait j'ai une liste chainee qui est donc composee de plusieurs stuctures ayant les memes champs et un de ces champs est lui meme une liste chainee comprenant donc plusieurs structures.
Avec un exemple ca sera plus simple: disons qu'on cree une liste de personnes avec des details sur eux:
typedef struct adresse { int numeroDeRue; char rue[20]; char ville[20] struct adresse* next; } typedef struct personne { char nom[20]; int age; struct adress*; struct personne* next; }
J'aimerai en fait par exemple rajouter une 2eme adresse a une personne specifique, disons que j'ai une commande:
ajouterAdresse <nom> <age> <numeroDeRue> <rue> <ville>
Comment je fais pour acceder au champ adresse d'une personne specifique et ajouter une adresse a cette liste chainee?
Je sais ecrire une fonction qui me trouve l'emplacement de la structure ayant le nom et l'age entres par l'utilisateur mais apres je bloque pour ajouter une structure a la 2eme liste chainee..
Merci de m'aider!
A voir également:
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte.
- Suivi des modifications Word : comment l'utiliser - Guide
- Liste déroulante excel - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : chaque paragraphe doit être espacé de 0,42 cm ou 12 pt du paragraphe qui suit les textes ne doivent pas être en retrait à droite et à gauche après ces modifications, sur quelle page se trouve le titre « la cheminée » dans le chapitre « informations diverses » ? - Guide
- Liste déroulante en cascade - Guide
1 réponse
Bonjour,
il te faut trouver la personne (enfin son emplacement) ensuite il faut parcourir la liste de ses adresses en gardant en mémoire l'adresse en cours et l'adresse precedente. Une fois que ton adresse en cours est null, tu alloue (fct malloc) une struture de type adresse (tu la remplit) et tu la mets dans l'adresse precedente .
typedef struct personne
{
char nom[20];
int age;
struct adress*tete_adresse;
struct personne* next;
}
En gros :
1) tu recupere l'emplacement de la personne (de type *personne)
2) tu parcours ses adresses pour arriver en fin de liste avec une adresse *encours et adresse *precedente
encours=personne->tete_adresse;
precedente=NULL;
while(encours!=NULL)
{precedente=encours
encours->next
}
//A la sortie predente represente ton dernier maillon de ta liste chaine adresse
tu alloue une adresse et remplit sa structure puis le retour de malloc tu l'as met dans precedente
Bon courage
il te faut trouver la personne (enfin son emplacement) ensuite il faut parcourir la liste de ses adresses en gardant en mémoire l'adresse en cours et l'adresse precedente. Une fois que ton adresse en cours est null, tu alloue (fct malloc) une struture de type adresse (tu la remplit) et tu la mets dans l'adresse precedente .
typedef struct personne
{
char nom[20];
int age;
struct adress*tete_adresse;
struct personne* next;
}
En gros :
1) tu recupere l'emplacement de la personne (de type *personne)
2) tu parcours ses adresses pour arriver en fin de liste avec une adresse *encours et adresse *precedente
encours=personne->tete_adresse;
precedente=NULL;
while(encours!=NULL)
{precedente=encours
encours->next
}
//A la sortie predente represente ton dernier maillon de ta liste chaine adresse
tu alloue une adresse et remplit sa structure puis le retour de malloc tu l'as met dans precedente
Bon courage