Problème tri d'une liste chainée
Fermé
laidi-aya
Messages postés
1
Date d'inscription
dimanche 25 octobre 2015
Statut
Membre
Dernière intervention
25 octobre 2015
-
25 oct. 2015 à 14:25
chris79 Messages postés 97 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 29 oct. 2015 à 17:45
chris79 Messages postés 97 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 29 oct. 2015 à 17:45
A voir également:
- Problème tri d'une liste chainée
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Tri excel - Guide
- Liste site streaming illégal - Accueil - Services en ligne
- Annuaire inversé gratuit liste rouge - Forum Mobile
1 réponse
chris79
Messages postés
97
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
1 février 2016
25
29 oct. 2015 à 17:45
29 oct. 2015 à 17:45
Salut,
Tu as différents problèmes dans ton code. Je vais juste énumérer les plus problématiques :
- dans ta fonction liste_triée : lorsque la liste existe déjà, tu rajoutes un nouvel élément en tête...mais tu ne mets pas correctement à jour l'élément tete_n :
Tu écris :
alors qu'il faut juste définir la tête comme pointant sur le nouvel élément :
--> cela devrait déjà faire avancer ton histoire.
- Le problème principal de ton programme est lié aux prototypes de fonctions :
--> ta fonction cherche_max cherche le max mais ne retourne pas l'adresse de l'élément. Du coup lorsque tu veux libérer l'élément dans liberer_max tu te retrouves à rechercher une nouvelle fois le max :( :(
--> Prototypes suggérés :
qui prend en paramêtre la tête de la liste et retourne un pointeur sur l'élément qui contient le max.
qui prend en parametre la tete de la liste et l'élément à supprimer (issu de la fonction précédente). Retourne un pointeur sur la tete qui aura eventuellement été mis à jour dans la fonction.
Voilà voilou.
++
Tu as différents problèmes dans ton code. Je vais juste énumérer les plus problématiques :
- dans ta fonction liste_triée : lorsque la liste existe déjà, tu rajoutes un nouvel élément en tête...mais tu ne mets pas correctement à jour l'élément tete_n :
Tu écris :
*tete_n=*q;
alors qu'il faut juste définir la tête comme pointant sur le nouvel élément :
tete_n=q;
--> cela devrait déjà faire avancer ton histoire.
- Le problème principal de ton programme est lié aux prototypes de fonctions :
--> ta fonction cherche_max cherche le max mais ne retourne pas l'adresse de l'élément. Du coup lorsque tu veux libérer l'élément dans liberer_max tu te retrouves à rechercher une nouvelle fois le max :( :(
--> Prototypes suggérés :
*liste cherche_max(liste* tete)
qui prend en paramêtre la tête de la liste et retourne un pointeur sur l'élément qui contient le max.
liste * liberer_max (liste* tete,liste *elementContenantLeMax)
qui prend en parametre la tete de la liste et l'élément à supprimer (issu de la fonction précédente). Retourne un pointeur sur la tete qui aura eventuellement été mis à jour dans la fonction.
Voilà voilou.
++