Lo everyone, is it possible to have a list of lists?
Or create a structure that contains a list?
something like:
structure JinglBells
newlist BatMansmells ()
endstructure
A list of lists
Personally i use a linked list of a structure type :
then later in teh code i assign values :
and at the end i use the values :
linked lists are very usefull to store information with the exact memory size needed to store them, no need anymore of "Dim array.b(256)".
If you need more fields just add variables to your structure
Code: Select all
Structure keys
keyvalue.b
keypos.b
EndStructure
NewList SetKeys.keys()
Code: Select all
AddElement(SetKeys())
SetKeys()\keyvalue = 32
SetKeys()\keypos = 1
AddElement(SetKeys())
SetKeys()\keyvalue = 54
SetKeys()\keypos = 2
.
.
.
Code: Select all
ResetList(SetKeys())
While NextElement(SetKeys())
keyval = SetKeys()\keyvalue
pos = SetKeys()\keypos
.
.
.
If you need more fields just add variables to your structure

- Registered PB user -
Using PB 4.00
Using PB 4.00
Hi!
I found this in the CodeArchiv of Andre:
regards,
Christian
I found this in the CodeArchiv of Andre:
Code: Select all
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1676&highlight=
; Author: NicTheQuick
; Date: 15. July 2003
; Example for using LinkedLists in LinkedLists
; Beispiel zur Verwendung von LinkedLists in LinkedLists
;Hier werden die Speicheradressen der einzelnen LinkedLists gespeichert
NewList Speicher.l()
;Hier sind die einzelnen LinkedLists gespeichert
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
Christian