Bonjour,
Je suis en train de créer une classe pour faire une liste chainée qui permet de passer d'un élément a l'autre (noeud) dans les deux sens.
N1<-->N2<-->N3...
Pour aller de N1 vers N2 on utlise GetNoeudNext sur N1.
Pour aller de N2 vers N1 on utlise GetNoeudBefore sur N2.
voila, ou j'en suis dans son implémentation:
Maintenant je vous montre comment je compte l'utiliser:
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 interface type TNoeud = class(TObject) private Nom : string; NoeudPrecedent: TNoeud; NoeudSuivant: TNoeud; public constructor Create(Param:string); destructor Destroy; procedure AddChild(Name:string); published property Name:string read Nom write Nom; property GetNoeudNext:TNoeud read NoeudSuivant write NoeudSuivant; property GetNoeudBefore:TNoeud read NoeudPrecedent write NoeudPrecedent; end; implementation constructor TNoeud.Create(Param:string); begin Nom:=Param; NoeudSuivant:=nil; NoeudPrecedent:=nil; end; destructor TNoeud.Destroy; begin end; procedure TNoeud.ChangeName(Value:string); begin Nom:=Value; end; procedure TNoeud.AddChild(Name:string); begin NoeudSuivant:=TNoeud.Create(Name,False,True); //NoeudSuivant.NoeudPrecedent:= ??doit pointé sur N1?? end; end.
Comme vous l'avez compris la derniere ligne ne fonctionne pas. En effet j'ai pas reussi a faire pointé la varitable NoeudPrecedent dans la procedure TNoeud.AddChild(Name:string) sur N1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 var //declaration de la variable ex qui est une liste chainée ex:TNoeud; begin //creation du premier noeud de ma liste chainée ex:=TNoeud.create('N1'); //creation du second noeud de la liste chainée ex.AddChild('N2'); //On se position sur le Noeud N2 ex:=ex.GetNoeudNext; //On se reposition sur le Noeud N1 ex:=ex.GetNoeudBefore; end;
Dans la procedure on a access au champ du noeud comme "Name" par exemple. Mais moi ce que j'aimerai c avoir access a son address...
Quelqu'un voit il comment il faudrai faire?
Partager