в
void trier(){
struct patient *ptr = tete;
struct patient*prec=NULL;
int echange;
do{
echange=0;
while(ptr->suivant!=NULL){
prec=ptr;
ptr=ptr->suivant;
if(strcmp(prec->nom,ptr->nom)<0){
echangedeNom(prec,ptr);
echangedePrenom(prec,ptr);
echangedesentiers(prec,ptr);
echangedesannes(prec,ptr);
echange=1;
}
}
}while(echange==1);
printf("\n\n Trie Avec Succes ! \n");
}
когда вы закончите внутренний , в то время как вы пропустили установку ptr на начало списка для следующего поворота, поэтому ptr->suivant!=NULL
равно false и echange
остается 0 и вы перестанете сортировать
может быть:
void trier(){
int echange;
do{
struct patient *ptr = tete;
struct patient*prec=NULL;
echange=0;
while(ptr->suivant!=NULL){
prec=ptr;
ptr=ptr->suivant;
if(strcmp(prec->nom,ptr->nom)<0){
echangedeNom(prec,ptr);
echangedePrenom(prec,ptr);
echangedesentiers(prec,ptr);
echangedesannes(prec,ptr);
echange=1;
}
}
}while(echange==1);
printf("\n\n Trie Avec Succes ! \n");
}
Обратите внимание, что другой способ состоял в том, чтобы обмениваться ячейками, а не обмениваться их содержимым