tri de tableau de struct (comment faire les échanges des valeurs)
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 :
Code:
1 2 3 4 5 6
| struct personne
{
char *nom;
char *prenom;
int age;
}; |
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 :
personne Pers[10] ou bien faire : un tableau de 10 pointeurs pointant chacun sur une struct Personne comme ceci ?
Code:
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); |
Ensuite si je dois trié les struct par ordre alphabétique des noms comment fait-on ?
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 :
Code:
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; |
Méthode que je trouve lourding.
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.