Votre question

supprimer les occurences d'une liste (algorithme)

Tags :
  • element
  • Programmation
Dernière réponse : dans Programmation
8 Février 2006 15:47:17

actuellement etudiant.
je cherche un algorithme qui supprime les occurences d'un element dans une liste.
mais il y a quelque inconvenient :
- ma fonction n'a qu'un seul parametre :'une liste' et me retourne une liste,
- il n'y a pas de relation d'odre sur les elements de ma liste c-a-d que je peut tres bien avoir en parametre un e liste
(1 a b 2 8 b 1) 'ici le resultat devras etre de la forme (1 a b 2 8)'
- je noit pas utiliser de fonctions auxillaires

merci bcp

Autres pages sur : supprimer occurences liste algorithme

8 Février 2006 15:48:11

on peut savoir de quel langage il s'agit ?
8 Février 2006 16:01:12

il peut s'agir de n'importe quelle language puisque c'est un algorithme, ca peut etre en Scheme par exemple
Contenus similaires
8 Février 2006 17:31:37

en résumé, ce que tu veux faire c'est supprimer les doublons ?
8 Février 2006 17:43:31

oui mais avc les contraintes expliquer plus haut et de maniere recursive
8 Février 2006 18:04:47

Tu tries d'abord la liste, ensuite tu identifies facilement les doublons
8 Février 2006 18:06:43

  1. doublon(liste)
  2.  
  3. si pas vide(liste) alors
  4. si premier(liste) pas dans reste(liste)
  5. alors resultat = premier(liste) union doublon(reste(liste))
  6. sinon resultat = doublon(reste(liste))
9 Février 2006 10:26:49

En caml :
  1. let rec valeurs_uniques = function
  2. [] -> []
  3. | tete::queue when List.mem tete queue -> valeurs_uniques queue
  4. | tete::queue -> tete :: (valeurs_uniques queue)
  5. in


Le code tel quel renvoie la liste "à l'envers" : les premiers éléments à avoir été identifiés comme uniques sont placés en fin de la queue résultat. Comme tu ne sembles pas attacher une grande importance à l'ordre dans ta liste, je laisse tel quel, mais s'il faut changer ça prend deux lignes.
9 Février 2006 10:58:43

desole mais je ne comprend pas le codde en calm
je connais que le java pascal C et Scheme :-(
9 Février 2006 12:30:51

Faire de l'algo et pas faire de caml, c'est dommage.
Prend le pseudo-code au dessus alors. Il a juste oublié que si la liste est vide, tu dois renvoyer une liste vide.

Un code qui ressemble au C :
  1. int existe(int *liste, int element)
  2. {
  3. if (NULL == liste) return 1;
  4. return ((liste->head != element) && existe(liste->tail, element);
  5. }
  6.  
  7. int *liste_unique(int *liste)
  8. {
  9. if (NULL == liste) return NULL;
  10. int *queue_unique = liste_unique(liste->tail);
  11. if existe(liste->tail, liste->head) return queue_unique;
  12. return {head: liste->head; tail:queue_unique};
  13. }


On suppose que tu manipules des listes chainées qui sont des strucs comprenant head, un int, et tail, la suite de la liste chainée (qui vaut NULL si c'est le dernier élément).

J'ai jamais fait de C sérieusement, donc je garantis pas la validité de mon code (surtout au niveau du blablatage pointeurs).
21 Avril 2011 16:31:54

Ca a l'air pas mal !! J'ai le même problème en Fortran 77, et je ne suis que débutant. Pourrais-tu me transcrire ça en Fortran de manière à ce que je dispose d'une base... ??

Merci !!!!!!!!!


bluedylc a dit :
Faire de l'algo et pas faire de caml, c'est dommage.
Prend le pseudo-code au dessus alors. Il a juste oublié que si la liste est vide, tu dois renvoyer une liste vide.

Un code qui ressemble au C :
  1. int existe(int *liste, int element)
  2. {
  3. if (NULL == liste) return 1;
  4. return ((liste->head != element) && existe(liste->tail, element);
  5. }
  6.  
  7. int *liste_unique(int *liste)
  8. {
  9. if (NULL == liste) return NULL;
  10. int *queue_unique = liste_unique(liste->tail);
  11. if existe(liste->tail, liste->head) return queue_unique;
  12. return {head: liste->head; tail:queue_unique};
  13. }


On suppose que tu manipules des listes chainées qui sont des strucs comprenant head, un int, et tail, la suite de la liste chainée (qui vaut NULL si c'est le dernier élément).

J'ai jamais fait de C sérieusement, donc je garantis pas la validité de mon code (surtout au niveau du blablatage pointeurs).

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS