
Une Liste chainée à l'intérieur d'une liste chainée ?
Une Liste chainée à l'intérieur d'une liste chainée ?
Je suis nouvellement inscrit et je me pose la question suivante : est-il possible de mettre une liste chainée à l'intérieur d'une autre liste chainée ? On peut déjà mettre des tableaux à l'intérieur d'une liste mais qu'en est-il d'une liste ? 

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Mettre une liste dans une liste chainée... NON
Mettre un tableau dans une liste chainée... OUI
Mettre un tableau dans une liste chainée... OUI
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Bonjour à tous ! je n'ai pas été très poli en mettant le premier post !
Merci Progi1984 !
Voilà un bout de mon programme...
....
[/list]
Merci Progi1984 !
Voilà un bout de mon programme...
....
Code : Tout sélectionner
Structure Aeronef
NumPays.w
NumCsteur.w
NumAeronef.w
NomAvion.s
NomCode.s
NomVersions.Versions
EndStructure
Structure Versions
nbVersion.b
Version.s[#NbVersions]
FonctionType.s[#NbVersions]
EndStructure
Suite au Tuto sur les structures, il manque à mon humble avis, l'utilisation de la structure liée à la première.
Comment accéder aux tableaux statiques Versions et FonctionType :?:
Code : Tout sélectionner
#NbVersions=3
Structure Versions
nbVersion.b
Version.s[#NbVersions]
FonctionType.s[#NbVersions]
EndStructure
Structure Aeronef
NumPays.w
NumCsteur.w
NumAeronef.w
NomAvion.s
NomCode.s
NomVersions.Versions
EndStructure
;Je ne suis pas sûr d'avoir compris la question
Define Truc.Aeronef
Truc\NomVersions\Version[0] ="Version 0"
Truc\NomVersions\FonctionType[0] ="Fonction type 0"
Truc\NomVersions\Version[1] ="Version 1"
Truc\NomVersions\FonctionType[1] ="Fonction type 1"
Truc\NomVersions\Version[2] ="Version 2"
Truc\NomVersions\FonctionType[2] ="Fonction type 2"
For i = 0 To 2
Debug Truc\NomVersions\Version[i]
Debug Truc\NomVersions\FonctionType[i]
Next i
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
tu peut utiliser une file aussi c'assez facil a imbriquer j'ai codé sa si sa peut t'aider :
http://www.purebasic.fr/french/viewtopi ... ght=#63016
http://www.purebasic.fr/french/viewtopi ... ght=#63016
Bonjour !
j'ai essayé la solution suivante mais ça ne fonctionne pas
Après bien des tests, pas moyen
j'ai essayé la solution suivante mais ça ne fonctionne pas

Après bien des tests, pas moyen
Code : Tout sélectionner
#NbVersions=3
Structure Versions
nbVersion.b
Version.s[#NbVersions]
FonctionType.s[#NbVersions]
EndStructure
Structure Aeronef
NumPays.w
NumCsteur.w
NumAeronef.w
NomAvion.s
NomCode.s
NomVersions.Versions
EndStructure
NewList Truc.Aeronef()
; ICI : LE DEBUT DES PROBLEMES
; MESSAGE : The linked list doesn't have a current element
Truc()\NomVersions\Version[0] ="Version 0"
Truc()\NomVersions\FonctionType[0] ="Fonction type 0"
Truc()\NomVersions\Version[1] ="Version 1"
Truc()\NomVersions\FonctionType[1] ="Fonction type 1"
Truc()\NomVersions\Version[2] ="Version 2"
Truc()\NomVersions\FonctionType[2] ="Fonction type 2"
For i = 0 To 2
Debug Truc()\NomVersions\Version[i]
Debug Truc()\NomVersions\FonctionType[i]
Next i
pour ajouter un élément dans une liste chaînée il faut utiliser la commande
AddElement()
AddElement()
Code : Tout sélectionner
#NbVersions=3
Structure Versions
nbVersion.b
Version.s[#NbVersions]
FonctionType.s[#NbVersions]
EndStructure
Structure Aeronef
NumPays.w
NumCsteur.w
NumAeronef.w
NomAvion.s
NomCode.s
NomVersions.Versions
EndStructure
NewList Truc.Aeronef()
; ICI : LE DEBUT DES PROBLEMES
; MESSAGE : The linked list doesn't have a current element
AddElement(Truc())
Truc()\NomVersions\Version[0] ="Version 0"
Truc()\NomVersions\FonctionType[0] ="Fonction type 0"
Truc()\NomVersions\Version[1] ="Version 1"
Truc()\NomVersions\FonctionType[1] ="Fonction type 1"
Truc()\NomVersions\Version[2] ="Version 2"
Truc()\NomVersions\FonctionType[2] ="Fonction type 2"
For i = 0 To 2
Debug Truc()\NomVersions\Version[i]
Debug Truc()\NomVersions\FonctionType[i]
Next i
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Vu dans Code Archiv...
Code : Tout sélectionner
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1676&highlight=
; Author: NicTheQuick (updated for PB 4.00 by Andre)
; Date: 15. July 2003
; OS: Windows
; Demo: Yes
; Example for using LinkedLists in LinkedLists
; Beispiel zur Verwendung von LinkedLists in LinkedLists
;Hier werden die Speicheradressen der einzelnen LinkedLists gespeichert
Global NewList Speicher.l()
;Hier sind die einzelnen LinkedLists gespeichert
Global NewList LinkedList.l()
Procedure NewLinkedList() ;Erstellt eine neue LinkedList und ein neues Element in der Liste
If LastElement(LinkedList())
AddressLast.l = @LinkedList()
EndIf
AddElement(LinkedList())
Address.l = @LinkedList()
PokeL(Address - 8, 0)
PokeL(Address - 4, 0)
If AddressLast
PokeL(AddressLast - 8, 0)
EndIf
AddElement(Speicher())
Speicher() = Address
EndProcedure
Procedure NextLinkedList() ;Springt zur nächsten dynamischen LinkedList
If NextElement(Speicher())
ChangeCurrentElement(LinkedList(), Speicher())
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure PreviousLinkedList() ;Springt zur vorherigen dynamischen LinkedList
If PreviousElement(Speicher())
ChangeCurrentElement(LinkedList(), Speicher())
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure FirstLinkedList() ;Springt zur ersten LinkedList
If FirstElement(Speicher())
ChangeCurrentElement(LinkedList(), Speicher())
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure LastLinkedList() ;Springt zur letzten LinkedList
If LastElement(Speicher())
ChangeCurrentElement(LinkedList(), Speicher())
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure DeleteLinkedList() ;Löscht eine LinkedList mit allen Elementen
If @Speicher()
ChangeCurrentElement(LinkedList(), Speicher())
DeleteElement(LinkedList())
While NextElement(LinkedList())
DeleteElement(LinkedList())
Wend
DeleteElement(Speicher())
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure FirstLinkedListElement() ;Springt zum ersten Element in der LinkedList
If Speicher()
ChangeCurrentElement(LinkedList(), Speicher())
EndIf
EndProcedure
;BEISPIEL-CODE
;¯¯¯¯¯¯¯¯¯¯¯¯¯
NewLinkedList() ;Wir erstellen eine LinkedList mit 2 Elementen
LinkedList() = 1
AddElement(LinkedList())
LinkedList() = 2
NewLinkedList() ;Und noch eine mit 3 Elementen
LinkedList() = 3
AddElement(LinkedList())
LinkedList() = 4
AddElement(LinkedList())
LinkedList() = 5
NewLinkedList() ;Noch eine mit 4 Elementen
LinkedList() = 6
AddElement(LinkedList())
LinkedList() = 7
AddElement(LinkedList())
LinkedList() = 8
AddElement(LinkedList())
LinkedList() = 9
FirstLinkedList() ;Wir springen zur ersten LinkedList
Debug LinkedList()
While NextElement(LinkedList())
Debug LinkedList() ;und gehen alle Elemente durch
Wend
LastLinkedList() ;Die letzte LinkedList
Debug LinkedList()
While NextElement(LinkedList())
Debug LinkedList()
Wend
PreviousLinkedList() ;Die vorherige LinkedList
Debug LinkedList()
While NextElement(LinkedList())
Debug LinkedList()
Wend
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !