Deux problèmes
- sur le principe : tu mémorises le minimum mais pas où il se trouve. Alors tu ne peux faire l'échange entre les valeurs de la première cellule du sous-tableau et de celle qui contient le minimum.
min devrait donc être
1 2 3 4 5 6
| noeud *min ;
int temp;
while(precedent!=NULL)
{
min=precedent;
... |
La comparaison devenant :
parcour->info < min->info
- tu oublies de replacer le pointeur parcour(s) au début du sous-tableau à traiter :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| while(precedent!=NULL)
{
min=precedent;
parcour=precedent->suivant;
while(parcour!=NULL)
{
if(parcour->info<min->info) min=parcour;
parcour=parcour->suivant;
}
if(precedent->info!=min->info)
{
// procéder à l'échange
}
.... |
Sinon :
-
noeud *parcour=precedent->suivant; // plante si la liste est vide
- main renvoie toujours un int pas void
- Il faut respecter l'indentation du code sinon il est illisible
- Si l'insertion se fait toujours en fin, il est commode que la structure décrivant la liste comporte un pointeur sur le début de la liste et un pointeur sur le dernier élément de la liste.
- Il est logique de passer à afficher() un pointeur, comme pour les autres fonctions, plutôt que la structure elle même
Partager