
Code : Tout sélectionner
Structure Element ; notre structure pour la liste chainée
*NextElement.l ; pointeur vers l'element suivant
*PreviousElement.l ; pointeur vers l'element precedant (non utiliser dans cet exemple, mais facilement utilisable si vous avez compris comment marche NextElement
Value.l ; et enfin, une valeur
EndStructure
Test.Element ; ici, notre premier element
Test\NextElement = #NULL ; pas d'element suivant.. donc NULL
Test\PreviousElement = #NULL ; pas d'element precedant.. donc NULL
Test\Value = 10 ; et une valeur
Test2.Element ; notre 2eme element
Test\NextElement = @Test2 ; donc on reprend notre premier element et on fait pointer NextElement vers notre 2eme element
Test2\PreviousElement = @Test ; on fait pointer PreviousElement de notre 2eme element vers notre premier Element
Test2\NextElement = #NULL ; pas d'element suivant donc NULL
Test2\Value = 20 ; encor une valeur (euh... au cas ou vous n'auriez pas compris, value ici ne sert a rien, c'est juste pour apres voir si c'est bon.... :)
Test3.Element ; jamais 2 sans 3... notre 3eme element
Test2\NextElement = @Test3 ; donc on reprend notre 2eme element et on fait pointer NextElement vers notre 3eme element
Test3\PreviousElement = @Test2 ; toujour pareil... on fait pointer PreviousElement de notre 3eme element vers notre 2eme element
Test3\NextElement = #NULL ; pas d'element suivant
Test3\Value = 30 ; encore une valeur (on a dit jamais 2 sans 3 :p)
Procedure Debugtest(*Lst.Element) ; une proc qui va nous faire defiller la chaine (j'aurai bien pu faire un proc AddElement mais bon... si vous avez compris jusque la, pas de soucis :)
; donc on a un pointeur vers un element (*Lst)
EndLst = 0 ; va nous servir a terminer la boucle
Repeat
Debug *Lst\Value ; on debug la valeur de l'element
If *Lst\Nextelement = #NULL ; ensuite si NextElement de l'element courant est NULL, sa veut dir qu'il n'y a pas d'element suivant, donc on arrete la
EndLst =1 ; hop
Else ; sinon
*Lst = *Lst\NextElement ; et bien l'element courant (*Lst) devient l'element suivant de l'element courant
EndIf
Until EndLst = 1 ; finished
EndProcedure
Debugtest(@Test) ; on test a partir de l'element Test, et normalement le debug renvoi 10 puis 20 puis 30
