Structure récursive & Hiérarchie
Publié : ven. 12/juil./2019 23:32
Une structure qui fait référence à elle même pour former une liste de nodes. C'est cette astuce qu'on utilisera pour arriver à établir un exemple de hiérarchie.
■ Principe de fonctionnement.
Un node peut contenir une ou plusieurs variables ainsi qu'une liste de nodes.
Chacun de ces nodes de la liste contiendra une liste de nodes.
Chacun de ces nodes de la liste contiendra une liste de nodes.
etc ...
■ Exemple.
Nous allons créer des types de véhicules (terrestres & marins). Pour chacun des types on va inséré des véhicules et sur un des véhicules nous allons insérer une motorisation.le résultat devrait être le suivant.
■ Principe de fonctionnement.
Un node peut contenir une ou plusieurs variables ainsi qu'une liste de nodes.
Chacun de ces nodes de la liste contiendra une liste de nodes.
Chacun de ces nodes de la liste contiendra une liste de nodes.
etc ...
Code : Tout sélectionner
Structure NewNode
Texte.s
List Nodes.NewNode()
EndStructure
Global NewList Nodes.NewNode()
Nous allons créer des types de véhicules (terrestres & marins). Pour chacun des types on va inséré des véhicules et sur un des véhicules nous allons insérer une motorisation.
Code : Tout sélectionner
Structure NewNode
Texte.s
List Nodes.NewNode()
EndStructure
Global NewList Nodes.NewNode()
Procedure AddNode(Texte.s,*Node.NewNode=0)
Protected Result
If *Node
Result = AddElement(*Node\Nodes())
*Node\Nodes()\Texte = Texte
Else
Result = AddElement(Nodes())
Nodes()\Texte = Texte
EndIf
ProcedureReturn Result
EndProcedure
Procedure ListNodes(List Nodes.NewNode())
Static pre.s = "="
ForEach Nodes()
Debug pre + "> " + Nodes()\Texte
ForEach Nodes()\Nodes()
pre + "="
ListNodes(Nodes()\Nodes())
Next
Next
pre = "="
EndProcedure
;// Test Zone
; Création de la hiérachie
Terrestre = AddNode("Véhicules terrestres")
AddNode("Trotinettes", Terrestre)
AddNode("Vélos", Terrestre)
Voitures = AddNode("Voitures", Terrestre)
AddNode("Electriques", Voitures)
AddNode("Thermiques ", Voitures)
Marins = AddNode("Véhicules marins")
AddNode("Barques", Marins)
AddNode("Voiliers", Marins)
AddNode("Paquebots", Marins)
; Visualisation du résultat
ListNodes(Nodes())
=> Véhicules terrestres
==> Trotinettes
==> Vélos
==> Voitures
===> Electriques
===> Thermiques
=> Véhicules marins
==> Barques
==> Voiliers
==> Paquebots