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 :

creation d'une liste doublement chainée


Sujet :

Algorithmes et structures de données

  1. #1
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut creation d'une liste doublement chainée
    bonjour chers developpeurs,
    j'ai en fait à créer une liste de contacts en utilisant le concept de "liste doublement chainée".
    mon code que j'ai fait est le suivant:
    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
    type:contact=enregistrement
           nom:chaine(100c)
           prenom:chaine(100c)
           suivant:^contact     \^indique qu'il est de type pointeur\
           precedent:^contact
    fin enregistrement
    procedure(tete,queue:^contact)
     variables:p:^contact
                  c:caractere
    tete<-nil
    queue<-nil
    repeter
        allouer(p)
        lire(p^nom,p^prenom)
        p^precedent<-queue
        p<-p^suivant
        queue<-p
       ecrire('voulez vous continuez?[o\n]')
       lire(c)
       jusqu'à((c='n')ou(c='N'))
    comme vous remarquez j'ai pas traité le cas extreme(et c'est la ou je me suis bloqué) :pour un premier element creéé le pointeur precedent ne pointera sur rien(je sais bien ça mais je n'arrive pas à traduire ça en algorithmique) ,la meme chose si j'arrive à la creation de dernier element ou le pointeur suivant ne pointera sur rien
    j'aimerais que vous me donniez quelques indications pour que je puisse etablir l'algo complet.
    merci d'avance.
    cordialement s-ehtp

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Tu donnes pratiquement la réponse à ta question.

    Dans tous les langages à pointeur il existe une valeur 'NULL', 'NIL' ou quelque chose d'approchant servant à repérer qu'une variable de type pointeur n'est pas affectée. Le noeud de tête est donc caractérisé par le fait que la donnée 'precedent' contient la valeur NULL, quant au noeud de tête c'est la valeur de 'suivant' qui est NULL. (Je ne fais que te répéter...).

    Bon, maintenant tu démarres avec une liste vide c'est à dire un pointeur sur un noeud pour lequel suivant et precedent sont NULL tous deux. N'oublie pas qu'une liste est un pointeur sur un noeud (en général le premier, mais dans une liste doublement chaînée, n'importe lequel convient puisqu'on peut parcourir la liste dans les deux sens en suivant les pointeurs suivant ou precedent jusqu'à atteindre une extrêmité.

    Ensuite il suffit que tu implémentes quelques procédures:
    • Ajouter en tête
    • Ajouter en queue
    • Ajouter en conservant l'ordre alpha des noms.
    • Ensuite tu fais comme tu le suggères:
    • Le mieux c'est un petit menu en boucle
    • Ajouter un noeud
    • Supprimer un noeud
    • Voir un record
    • Modifier un record
    • Lister tout
    • Sortir

Discussions similaires

  1. creation d'une liste chainée
    Par naniate dans le forum C
    Réponses: 3
    Dernier message: 03/11/2007, 17h51
  2. Réponses: 2
    Dernier message: 24/03/2007, 12h48
  3. Réponses: 9
    Dernier message: 14/01/2007, 17h09
  4. Transformer une liste en chaîne de caractères
    Par nounjours dans le forum Prolog
    Réponses: 1
    Dernier message: 23/02/2006, 15h41
  5. Liste doublement chainée
    Par sorry60 dans le forum C
    Réponses: 23
    Dernier message: 03/12/2005, 17h12

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