Bonjour j'aimerais savoir quand on tri (avec le tri par tas par exemple) des structs comment ça se passe doit-on passer par des pointeurs ou par un tableau de struct ?
Comment on doit faire pour les échanges entre struct ?
Exemple si j'ai une struct de se style :
Imaginons que 10 personnes doivent rentrés leurs nom, prénom, âge ; tout d'abord dois-je déclarer un tableau de struct et donc faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct personne { char *nom; char *prenom; int age; };
personne Pers[10] ou bien faire : un tableau de 10 pointeurs pointant chacun sur une struct Personne comme ceci ?
Ensuite si je dois trié les struct par ordre alphabétique des noms comment fait-on ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct _personne { char *nom; char *prenom; int age; }personne; personne **Pers=malloc(10*sizeof*Pers); for(i=0;i<10;i++) tab[i]=malloc(sizeof**tab);
Pour le tableau Pers[10] je pense qu'il faudra faire l'échange nom avec nom, prénom avec prénom, âge avec âge ? Comme ceci :
Méthode que je trouve lourding.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 tmp=tab[0]->nom; tab[0]->nom=tab[1]->nom; tab[1]->nom=tmp; tmp=tab[0]->prénom; tab[0]->prénom=tab[1]->prénom; tab[1]->prénom=tmp; tmp=tab[0]->age; tab[0]->age=tab[1]->age; tab[1]->age=tmp;
En ce qui concerne le tableau de pointeur de struct ;
Quand le programme aura trouvé deux noms à échangés est-ce qu'il faudra faire l'échange de tous les noms prénoms et âge (comme vu si dessus) ou bien faudra t-il juste échanger les pointeurs?
Je sais pas si j'ai été clair, merci par avance pour votre aide.
Partager