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

Langage Pascal Discussion :

Liste chaînée en Pascal


Sujet :

Langage Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut Liste chaînée en Pascal
    Bonjour !!

    Le titre ne dit pas tout. En fait j'ai très bien pigé le concept de liste chaîné simple, que j'arrive très bien mettre en oeuvre en pascal.

    Par contre j'ai un souci avec les listes doublement chaînées. Là aussi j'ai compris le concept que j'arrive très bien à visualiser sur papier mais dès qu'il faut mettre en pratique je bloque.

    En fait la seule solution que j'ai trouvé pour réaliser cela est une liste statique doublement chaînée pas très élégante de ce style :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    type	
    	chaine 	= string[20] ;
    	Pdonnee = ^donnee ;
    	donnee	= record
    			nom : chaine ;
    			pSuivant : Pdonnee ;
    			pPrecedant : Pdonnee ;
    		       end ;
    	liste =	record
    		   debut : Pdonnee ;
    		   fin	: Pdonnee ;
    		 end ;
    var
    	cellule1, cellule2, cellule3 : Pdonnee ;
    	pListe	: liste ;
     
    BEGIN
     
    		new (cellule1) ;
    		new (cellule2) ;
    		new (cellule3) ;
     
    		pListe.debut := nil ;
    		pListe.fin := cellule2 ;
     
    		cellule1^.nom := 'joe' ;
    		cellule1^.pPrecedant := pListe.debut ;
    		cellule1^.pSuivant := pListe.fin ;
     
    		pListe.debut := Cellule1 ;
    		pListe.fin := Cellule3 ;
     
    		cellule2^.nom := 'fred' ;
    		cellule2^.pPrecedant := pListe.debut ;
    		cellule2^.pSuivant := pListe.fin ;
     
    		pListe.debut := Cellule2 ;
    		pListe.fin := nil ;
     
    		cellule3^.nom := 'jack' ;
    		cellule3^.pPrecedant := pListe.debut ;
    		cellule3^.pSuivant := pListe.fin ;
     
    		pListe.debut := cellule1 ;
    		pListe.fin := cellule3 ;
     
    		readln ;
     
    END.
    Ce code ne réalise aucun traitement visible mais il créé une liste doublement chaînée à sa façon.

    En fait mon problème c'est que j'ai du mal à réaliser la même chose à l'aide d'UNE SEULE variable en mémoire statique (cellule) au lieu des 3 (cellule1, cellule2, cellule3) que j'ai créées, en employant une boucle sous contrôle pour créer la liste dynamiquement.

    C'est vrai je vois mal comment je pourrais, au moment de sa création, faire un enregistrement pointé prendre la référence d'un autre enregistrement qui n'existe meme pas encore ...

    Dans mon code c'est facile puisque les 3 enregistrements existent deja avant la création de la chaîne.

    Si on pouvait bien éclairer ma lanterne, surtout que jsuis vraiment débutant ou alors jsuis trop fatigué

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Citation Envoyé par shadokk
    C'est vrai je vois mal comment je pourrais, au moment de sa création, faire un enregistrement pointé prendre la référence d'un autre enregistrement qui n'existe meme pas encore ...
    Ben c'est justement ca le truc, il faut affecter les champs à nil si ils ne pointent sur rien

    Après, y'a pas vraiment d'astuce. Tu peux regarder ce code pour t'aider :

    http://pascal.developpez.com/exercic...e=Sect9#point4


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