A voir également:
- Faites-moi mon agenda en C
- Synchroniser agenda google et outlook - Guide
- Google agenda pc - Télécharger - Agendas & Calendriers
- Agenda partagé google - Guide
- Telecharger agenda gratuit - Télécharger - Organisation
- Agenda 1582 - Télécharger - Bureautique
3 réponses
ok, avant tout, il faut bien comprendre le principe des listes chainées.
Tu as deux structures :
Une qui est composé de deux variables :
-> 1 entier qui contient le nombre d'élements total (de personnes dans ton cas)
-> 1 pointeur vers la premier élément de ta liste (vers la première personne dans ton cas).
Puis une autre structure composé de différents champs. Pour toi, ce sera noms et téléphones.
Et surtout, un pointeur vers un autre élément de la même structure.
----------------------------------
On va dire que t'as ces deux structures :
struct fiche
{
struct personne p;
struct fiche *p_suivant;
};
struct principal
{
fiche *premier;
int nb_elements;
}
Lors d'une insertion, tu as trois cas :
-1-
premier est NULL.
Dans ce cas, c'est tout con, tu cré une nouvelle fiche, et tu fais pointer premier dessus.
-2-
Insertion "classique"
T'as deux pointeurs temporaires, de fiche.
En gros, ca doit donner un truc de ce genre :
pt1 = principal.premier
TANT QUE i < nb_elements ET pt1.nom < nom FAIRE
pt2 <-- pt1
pt1 <-- pt1.suivant
FIN TANT QUE
FICHE *pt3 // la fiche à insérer
(...)
pt2.suivant = pt3;
pt3.suivant = pt2;
-3-
C'est que tu te retrouve à la fin de ta liste.
C'est tout con, il faut juste que le dernier élément pointe sur ton élément.
Dans tout cas cas, il faut aussi incrémenter le nombre de personnes (principal.nb_elements++).
Voilà, aussi juste un mot pour les allocations dynamiques.
Pour allouer dynamiquement, il te faut utiliser malloc.
sa prend en paramètre une taille et sa retourne vers une zone mémoire.
Tu veut faire un malloc pour une fiche.
FICHE *pt_fiche;
ptfiche = malloc ( sizeof(fiche) );
ptfiche -> suivant = XXX // (*ptfiche).suivant = XXX
Puis pour le supprimer :
free(ptfiche).
Voilà, si t'as des questions, hesite pas, je sais pas si j'ai été très clair.
Tu as deux structures :
Une qui est composé de deux variables :
-> 1 entier qui contient le nombre d'élements total (de personnes dans ton cas)
-> 1 pointeur vers la premier élément de ta liste (vers la première personne dans ton cas).
Puis une autre structure composé de différents champs. Pour toi, ce sera noms et téléphones.
Et surtout, un pointeur vers un autre élément de la même structure.
----------------------------------
On va dire que t'as ces deux structures :
struct fiche
{
struct personne p;
struct fiche *p_suivant;
};
struct principal
{
fiche *premier;
int nb_elements;
}
Lors d'une insertion, tu as trois cas :
-1-
premier est NULL.
Dans ce cas, c'est tout con, tu cré une nouvelle fiche, et tu fais pointer premier dessus.
-2-
Insertion "classique"
T'as deux pointeurs temporaires, de fiche.
En gros, ca doit donner un truc de ce genre :
pt1 = principal.premier
TANT QUE i < nb_elements ET pt1.nom < nom FAIRE
pt2 <-- pt1
pt1 <-- pt1.suivant
FIN TANT QUE
FICHE *pt3 // la fiche à insérer
(...)
pt2.suivant = pt3;
pt3.suivant = pt2;
-3-
C'est que tu te retrouve à la fin de ta liste.
C'est tout con, il faut juste que le dernier élément pointe sur ton élément.
Dans tout cas cas, il faut aussi incrémenter le nombre de personnes (principal.nb_elements++).
Voilà, aussi juste un mot pour les allocations dynamiques.
Pour allouer dynamiquement, il te faut utiliser malloc.
sa prend en paramètre une taille et sa retourne vers une zone mémoire.
Tu veut faire un malloc pour une fiche.
FICHE *pt_fiche;
ptfiche = malloc ( sizeof(fiche) );
ptfiche -> suivant = XXX // (*ptfiche).suivant = XXX
Puis pour le supprimer :
free(ptfiche).
Voilà, si t'as des questions, hesite pas, je sais pas si j'ai été très clair.
8 mai 2002 à 14:54
22 mai 2002 à 09:00