IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Liste chaînée] copie sélective


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut [Liste chaînée] copie sélective
    Bonjour à tous

    Je travaille sur une liste chaînée. Or, je veux faire un premier tri de cette liste chaînée pour ne retenir que les maillons qui répondent à un critère. Ainsi, je voudrais recréer une autre liste chaînée résultat qui contiendrait tous les éléments qui ont passé avec succès le test. Je ne cherche pas du code, mais plutôt les idées maîtresses pour réaliser une fonction de ce genre, cela fait un bail que j'ai plus fait de liste chaînée

    Merci d'avance de votre aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre éclairé Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Par défaut
    Moi je ferais comme ça:

    Tu parcours ta première liste chainée dans l'ordre, en créant une deuxième liste mais dans laquelle tu ne mets que les éléments qui répondent au critère:

    1) tu parcours la liste 1 à la recherche du premier élément qui répond au critère. Des qu'il est trouvé,tu le copie (sauf la valeur du pointeur vers le suivant puisqu'on ne connait pas encore le suivant. donc cette valeur doit pour l'instant etre NULL, car peut-etre qu'il n'y aura aucun suivant), et la copie devient la "racine" de ta liste 2.

    rappel: chaque élément contient un pointeur vers le suivant. (ou 2 pointeurs, un vers le suivant un vers le précédent) Si un pointeur vaut NULL, on considère qu'on est à la fin de la liste (c'est une façon de faire)

    2) maintenant tu boucles jusqu'à la fin de liste 1:
    l'element que tu vient de crée lors d'une copie devient "elemPrecedent"
    - cherche dans la liste 1 le prochain élément répondant au critère
    - une fois trouvé, tu le copies en créant un "elemActuel" (ne copie pas le pointeur vers le suivant, init le é NULL de nouveau)
    - tu peux enfin initialiser la valeur du "pointeur vers élément suivant" de "elemPrecedant" en lui mettant l'adresse de "elemActuel"


    et voila. j'espère avoir été assez clair.

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Salut

    Citation Envoyé par Biosox
    Moi je ferais comme ça:
    ça me parrai bien compliqué!

    Un p'tit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (list)
    {
      if (test (list->data))
      {
        list2->add (list->data);
      }
      list = list->next;
    }
    Avec bien sur list la liste à triée et list2 la nouvelle liste contenant uniquement les maillons dont test (list->data) est vérifier.

    Ta question a surement plus sa place dans le forum algo, non ?

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Salut

    Merci à tous de vos réponses. Je vais tenter celle de Gégé.
    Merci encore

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/10/2005, 19h20
  2. Liste chaînée
    Par kilinette dans le forum C
    Réponses: 6
    Dernier message: 17/10/2005, 23h45
  3. Listes chaînées circulaires
    Par gege2061 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 11/05/2005, 13h44
  4. Construction de liste chaînées
    Par fomblardo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h19
  5. Insertion d'un noeud dans une liste chaînée
    Par habib106 dans le forum Assembleur
    Réponses: 8
    Dernier message: 07/04/2004, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo