Page 1 sur 1
Une Liste chainée à l'intérieur d'une liste chainée ?
Publié : jeu. 19/avr./2007 8:38
par Fanator
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 ?

Publié : jeu. 19/avr./2007 9:29
par Progi1984
Mettre une liste dans une liste chainée... NON
Mettre un tableau dans une liste chainée... OUI
Publié : jeu. 19/avr./2007 14:08
par Fanator
Bonjour à tous ! je n'ai pas été très poli en mettant le premier post !
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 :?:
[/list]
Publié : jeu. 19/avr./2007 15:26
par comtois
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
Publié : jeu. 19/avr./2007 16:07
par cha0s
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
Publié : ven. 20/avr./2007 8:47
par Fanator
Bonjour !
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
Publié : ven. 20/avr./2007 11:58
par comtois
pour ajouter un élément dans une liste chaînée il faut utiliser la commande
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
Publié : ven. 20/avr./2007 12:12
par Fanator
Merci Comtois !
Où avais-je la tête
Cela me rassure, j'avais fini par croire que cela aurait été impossible.
Publié : mar. 06/mai/2008 18:25
par Fanator
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
Publié : mar. 06/mai/2008 23:53
par lionel_om
La lib
Vector sinon qui est une liste chainée générique (de n'importe quel type).
/Lio