Tom's Guide > Forum > Programmation > supprimer les occurences d'une liste (algorithme)

supprimer les occurences d'une liste (algorithme)

Forum Programmation : supprimer les occurences d'une liste (algorithme)

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

on peut savoir de quel langage il s'agit ?

Répondre à razmo78

il peut s'agir de n'importe quelle language puisque c'est un algorithme, ca peut etre en Scheme par exemple

Répondre à kespy13

en résumé, ce que tu veux faire c'est supprimer les doublons ?

Répondre à ritzle

oui mais avc les contraintes expliquer plus haut et de maniere recursive

Répondre à kespy13

Tu tries d'abord la liste, ensuite tu identifies facilement les doublons

Répondre à ritzle

Code :
  1. doublon(liste)
  2. si pas vide(liste) alors
  3.   si premier(liste) pas dans reste(liste)
  4.   alors resultat = premier(liste) union doublon(reste(liste))
  5.   sinon resultat = doublon(reste(liste))

Répondre à milmot

En caml :

Code :
  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.

Répondre à bluedylc

desole mais je ne comprend pas le codde en calm
je connais que le java pascal C et Scheme :-(

Répondre à kespy13

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 :

Code :
  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. int *liste_unique(int  *liste)
  7. {
  8.     if (NULL == liste) return NULL;
  9.     int *queue_unique = liste_unique(liste->tail);
  10.     if existe(liste->tail, liste->head) return queue_unique;
  11.     return {head: liste->head; tail:queue_unique};
  12. }



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).

Répondre à bluedylc
Tom's Guide > Forum > Programmation > supprimer les occurences d'une liste (algorithme)
Aller à :

Il y a 2097 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens