Liste chainée! [Résolu]

Messages postés
46
Date d'inscription
mardi 2 juin 2009
Dernière intervention
7 octobre 2009
- - Dernière réponse : lg_brest
Messages postés
2
Date d'inscription
vendredi 3 octobre 2003
Dernière intervention
8 août 2009
- 8 août 2009 à 10:36
BONJOUR
Bon j'ai le type
type
PListeElem = ^TListeElem;
TListeElem = record
Elem: integer;
Suiv: PListeElem;
end;
Alors je voudrais savoir est ce que quand on crée une liste chainée par l'instruction:
New(Liste);
Liste.Elem:=3;

est ce qu'il faut que je mette aussi
Liste.Suiv:=Nil;


Merci de me répondre!
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
34
3
Merci
Vas faire un tour ici :

http://www.delphifr.com/codes/CHAINLISTS-LISTE-CHAINEE_50393.aspx

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
0
Merci
Ecoute :
une liste chaînée, doit être nécessairement chaînée
Commenter la réponse de Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
0
Merci
Mince désolé j'ai cliqué sur envoyer sans faire exprès.

Donc oui, quand tu ajoutes un élément dans ta liste chaînée (à la fin par exemple), Suiv doit prendre la valeur NIL.
Or, je t'engage à ajouter un pointeur sur l'élément précédent (Prec), sinon ta liste chaînée ne marchera pas (comment revenir en arrière ???).

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
2
0
Merci
ta question est un peu vague ... comprends tu bien le principe d'une liste chainée ???

si , quand tu créer ta liste, ta liste est vide , effectivement il n'y a rien après, donc oui tu mets NIL au suiv pr dire qu'il n'y a pas d'éléments après , sinon ben tu la chaine avec l'élément suivant tout simplement

potasse un peu tes cours (si tu es étudiant) parce que je crois que tu n'as pas bien pigé le principe.

Tu peux regarder des exemple en C (ou dans n'importe quel autre langage), le principe de base reste le même
Commenter la réponse de Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
2
0
Merci
@ bacterius : une liste doublement chainée n'est pas obligatoire , il te suffit de retenir dans un pointer l'élément précédent

il y a des manipulations un rien compliqué a faire pour gérer les listes chainées mais il suffit de savoir faire quelques opérations de bases :

créer une liste

insérer un éléments en tête de liste , à la fin et au millieu , qui peuvent être simple si bien penser

supprimer un élément

supprimer la liste
Commenter la réponse de Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
2
0
Merci
quand je devais bosser ça à l'école , je pense que ça m'avait bien aider

c'est du C mais c'est du pareil au même

http://www.siteduzero.com/tutoriel-3-36245-les-listes-chainees.html
Commenter la réponse de Nicolas___
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
0
Merci
@ bacterius : une liste doublement chainée n'est pas obligatoire , il te suffit de retenir dans un pointer l'élément précédent


Euh ... c'est pas ce que j'ai dit ?

[...] à ajouter un pointeur sur l'élément précédent (Prec)


Où ce sont des concepts différents ?

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
2
0
Merci
@ bacterius :
veut tu faire ca :

PListeElem = ^TListeElem;

TListeElem = record
Elem: integer;
Suiv: PListeElem;
Prec : PListeElem;
end;

ou retenir dans un pointer l'élément précédent quand tu parcours ta liste ?

le premier cas, c'est une liste doublement chainé ...

mais je pense que tu parles du deuxième cas , dans ce cas la , c'est ma faute
Commenter la réponse de Nicolas___
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
0
Merci
Ben en fait depuis hier j'ai oublié ce dont je voulais parler (honte à moi ). Mais je crois que je pensais à la première option (liste doublement chaînée).
Mais avec ta méthode (dans la boucle, retenir l'élément précédent), je ne vois toujours pas comment revenir en arrière ... (partir du dernier élément pour revenir au premier).

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
2
0
Merci
ca tu ne sais pas le faire !

c'est le problème avec un liste chainée , il faut la parcourir ...

non, le pointeur de sauvegarde sert quand tu veux ajouter un éléments à ta chaine (vu que tu va devoir le caser, il faut mettre a jour le Suiv de ton élément qui va pointer vers le nouveau bloc à insérer ... pfou c'est dur à expliquer comme ca )

mais ce qui est bien avec les listes chainés, c'est que les blocs ne se suivent pas en mémoire, ce qui peut être un plus dans certain cas ...

Mais bon , on a du l'étudier surtout pour savoir manipuler les pointeurs (et ca dans tt les sauces ! )

Liste chainée qui renvoi sur une autre liste chainée ... des trucs inutiles mais qui t'apprenne une certaine rigueur
Commenter la réponse de Nicolas___
Messages postés
2
Date d'inscription
vendredi 3 octobre 2003
Dernière intervention
8 août 2009
0
Merci
Salut,

dans certains cas, j'utilise plutôt une TList ou équivalent...
Commenter la réponse de lg_brest

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.