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 :

Comparaison de listes chainées


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comparaison de listes chainées
    Bonjour,

    Je voudrais comparer deux à deux tous les éléments de deux listes chainées. Pour cela, j'aimerais aller et revenir sans arret dans ma liste chainée. Or, si parcourir la liste dans un sens ne me pose pas de problèmes particuliers, je n'arrive pas à revenir dans l'autre sens. Comment faire?

    Merci d'avance!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Salut,
    si tu veux pouvoir parcourir ta liste dans les 2 sens y'a pas de secret : il te faut une liste doublement chaînée où chaque élément pointer vers le suivant et le précédent.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Avec des détails supplémentaires sur ton cas d'utilisation, nous pourrions peut-être te proposer des alternatives à la modification de ta structure de données.

    S'il s'agit simplement de produire une liste ordonnée à partir des deux listes initiales, par exemple, alors un tri fusion ferait tout-à-fait le job. Nul besoin de parcourir la liste en sens inverse dans ce cas.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Il y a une autre propriété intéressante de la comparaison deux à deux.

    Pour l'explication, numérotons les éléments de ta liste de N éléments. Cela va donc de 1 à N.

    Une fois comparés les éléments 1 & 2, il n'est pas nécessaire de comparer les éléments 2 & 1.
    De même pour 1 & 3 et 3 & 1.

    A priori, tu n'as à comparer qu'un élément avec les suivants.

    Donc, pour chaque élément, tu garde un pointeur dessus, puis tu utilises un autre pointeur pour parcourir la liste à partir de celui-là et comparer les deux.

    Cela dit, comme déjà dit, la bonne solution dépendra de ton besoin concret. Notamment de ce que tu fais du résultat de chaque comparaison.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/07/2008, 21h14
  2. Comparaison sur liste chainée
    Par calagan dans le forum C
    Réponses: 9
    Dernier message: 24/07/2007, 22h58
  3. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 20h05
  4. Réponses: 5
    Dernier message: 06/10/2003, 18h49
  5. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 21h25

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