Liste chainée! [Résolu]

Samou85 46 Messages postés mardi 2 juin 2009Date d'inscription 7 octobre 2009 Dernière intervention - 31 juil. 2009 à 14:46 - Dernière réponse : lg_brest 2 Messages postés vendredi 3 octobre 2003Date d'inscription 8 août 2009 Dernière intervention
- 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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 1 août 2009 à 15:14
3
Merci
Vas faire un tour ici :

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

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de f0xi
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 31 juil. 2009 à 18:25
0
Merci
Ecoute :
une liste chaînée, doit être nécessairement chaînée
Commenter la réponse de Bacterius
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 31 juil. 2009 à 18:26
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
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 31 juil. 2009 à 18:30
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___
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 31 juil. 2009 à 18:34
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___
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 31 juil. 2009 à 18:37
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___
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 31 juil. 2009 à 18:51
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
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 1 août 2009 à 10:50
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___
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 1 août 2009 à 12:08
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
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 1 août 2009 à 12:38
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___
lg_brest 2 Messages postés vendredi 3 octobre 2003Date d'inscription 8 août 2009 Dernière intervention - 8 août 2009 à 10:36
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.