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

Algorithmes et structures de données Discussion :

Construction de liste chaînées


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Construction de liste chaînées
    Bonjour a tous

    Alors je cherche a creer un projet et pour ça j'ai besoin d'une aide.

    J'ai crée une SDD(struture de données) et pour chaque variable dynamique, je crée une variable de type enregistrement (record) et je mets dedans : 1. un boolean 2. un charactere 3.pprec( pour retourner à l'adresse precedente) et 4. psuiv (pour aller a l'adresse suivante).

    Mon probleme est que je ne sais pas comment pprec peut marcher, je n'arrive pas à le declarer. Si quelqu'un pouvait m'aider ou alors me dire comment dans une SDD faire pour retourner à la variable dynamique precednte.

    Merci d'avance

    [Titre modifié et sujet déplacé par King Kaiser]

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    pprec et psuiv sont des pointeurs pointant sur la même SDD...

    pour la 1ère occurrence, pprec vaut toujours NIL
    pour chaque occurrence, psuiv vaut NIL jusqu'à ce que tu alloues la suivante, et là
    1/ new(MaSDD) => doit renvoyer un pointeur
    2/ le psuiv de l'occurrence (n-1) reçoit la valeur de ce pointeur.

    Ca ressemble à un e double liste chainée dynamique.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Salut!

    Je ne vois pas trop le rapport avec les bases de données et ton problème ressemble fort à celui des listes chaînées. Afin, on attend ton prochain message...

    Mon probleme est que je ne sais pas comment pprec peut marcher, je n'arrive pas à le declarer. Si quelqu'un pouvait m'aider ou alors me dire comment dans une SDD faire pour retourner à la variable dynamique precednte.
    Ta structure ressemble-t-elle à ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Type
    Liste = ^Noeud;
    Noeud = record
      VraiOuFaux : boolean;
      Charactere : char;
      PPrec : Liste;
      PSuiv : Liste;
    end;
    La création d'un nouveau noeud peut se faire soit en tête de liste soit en fin de liste (dans ton cas on parle de liste doublement chaînée).

    A+

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    salut

    je suis vraiment désolé ^^' apperemment je me suis trompé de forum

    Sinon King Kaiser, ma structure ressempe a celle ci sauf ke : psuiv indique l'adresse suivante mais je voudrais que pprec indique l'adresse precedente. Comment faire svp ?

  5. #5
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Salut!

    psuiv indique l'adresse suivante mais je voudrais que pprec indique l'adresse precedente
    C'est exactement ce que j'ai écrit

    Lorsque tu construiras ta liste, tu t'assureras de bien "attacher" les fils. Lorsque tu devras par exemple insérer un élément (on suppose la liste triée) tu parcours la liste jusqu'à trouver le noeud après lequel tu devras insérer, à ce moment tu peux écrire quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //NoeudCourant -> noeud après lequel on insère
    //Noeud -> Nouveau noeud à insérer
     
    Noeud->PSuiv = NoeudCourant->Psuiv;
    NoeudCourant->Psuiv = Noeud;
    Noeud->PPrec = NoeudCourant; //la liste peut être parcourue de la tête vers la queue ou de la  queue vers la tête
    Cherche sur le Net, tu trouveras certainement des solutions

    A+

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Attention, il y a un oubli dans les branchements :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Situation initiale
     
                           noeud
                       prec    suivant
     
      noeudcourant                  |-----> noeudapres
    prec     suivant----------------|        prec
           |                                  |
           |----------------------------------|
     
     
     
    Situation finale
     
                           noeud
                       prec | | suivant
            |------------|  | |    |
            |               | |    | 
      noeudcourant          | |    |---> noeudapres
    prec     suivant--------| |           prec
                              |             |
                              |-------------|
     
     
    Il faut faire
       Noeud->Psuiv = Noeudcourant->Psuiv;
       Noeud->Psuiv->Pprec = Noeud;  <== celui-ci était oublié
       Noeudcourant->Psuiv = Noeud;
       Noeud->Pprec = Noeudcourant.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par Trap D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Noeud->Psuiv->Pprec = Noeud;  <== celui-ci était oublié
    Oui c'est vrai

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ça rattrape mes balivernes de l'autre fois
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Points : 24
    Points
    24
    Par défaut Pourquoi réinventer le fil à couper le beurre ?
    va voir du coté de

    http://brautaset.org/projects/sl/


Discussions similaires

  1. Réponses: 15
    Dernier message: 01/11/2005, 13h32
  2. Réponses: 7
    Dernier message: 22/10/2005, 19h20
  3. Liste chaînée
    Par kilinette dans le forum C
    Réponses: 6
    Dernier message: 17/10/2005, 23h45
  4. 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
  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