SupprimeDoublons
Anna
-
Anna -
Anna -
Bonsoir,
Je veux créer un algorithme qui supprime les doublons dans une liste chaînée triée dans l'ordre croissant et qui contient des caractères alphabétique. SVP, qui peut me dire est ce que c'est correcte ?
Je veux créer un algorithme qui supprime les doublons dans une liste chaînée triée dans l'ordre croissant et qui contient des caractères alphabétique. SVP, qui peut me dire est ce que c'est correcte ?
Procédure supprimeDoublons( Var L : Liste )
Var
Q,P : Liste
Début
Q<- L
Si L # nil Alors
Tant que Q^.suiv # nil Faire
P<- Q
Q<-Q^.suiv
si Q^.val = P^.val Alors
Q^.suiv <- P^.suiv
Libérer (P)
Fin Si
Fin Tant que
Fin S
Fin
2 réponses
Bonjour,
En gros ça a l'air bon, cependant j'ai un doute sur
On a :
Donc
En gros ça a l'air bon, cependant j'ai un doute sur
Q^.suiv <- P^.suiv...
On a :
P<- Q
Q<-Q^.suiv
Donc
P^.suivc'est l'ancien
Q^.suivet donc le nouveau
Q, si tu fais
Q^.suiv <- P^.suivça donne donc
Q^.suiv <- Q, or il me semble qu'il faudrait plutôt avoir
Q <- Q^.suivpour supprimer la valeur de Q
Bonjour,
j'ai pas trouvée aucune solution, si je libère P je dois utiliser chaînage double pour affecter l'@ qui existe en P au pointeur précédent ( mais dans mon cas je dois trouver la solution avec chaînage simple ) et si je libère Q je ne sais pas comment ça marche avec le boucle tant que !!! ? SVP, n’hésitez pas à m'aider si vous avez des idées.
j'ai pas trouvée aucune solution, si je libère P je dois utiliser chaînage double pour affecter l'@ qui existe en P au pointeur précédent ( mais dans mon cas je dois trouver la solution avec chaînage simple ) et si je libère Q je ne sais pas comment ça marche avec le boucle tant que !!! ? SVP, n’hésitez pas à m'aider si vous avez des idées.
Pour bien progresser, tu pourrais essayer de faire ton algorithme avec un vrai langage de programmation (sur papier ce n'est pas évident à valider).
Dans ton cas, le passage au langage Pascal ne devrait pas trop poser de problème.
Avec IPcute tu pourrais visualiser ton algorithme s'exécuter pas à pas et voir l'état de libération de la mémoire. Voir Prise en main d'IPcute pour des exemples.
Dans ton cas, le passage au langage Pascal ne devrait pas trop poser de problème.
Avec IPcute tu pourrais visualiser ton algorithme s'exécuter pas à pas et voir l'état de libération de la mémoire. Voir Prise en main d'IPcute pour des exemples.
Remarque : c'est typiquement le genre de problèmes qui se résout bien avec de la récursivité.