BRL.LinkedList
A linked list allows you to efficiently add and remove objects to and from a collection of objects.
To create a linked list, use the CreateList command.
Add objects to a linked list using ListAddFirst or ListAddLast. Both commands return a link object which can be used to later remove the object with the RemoveLink command. You can also remove objects with the ListRemove command. However this is not as efficient as using RemoveLink because the list must first be searched for the object to be removed.
To visit all the objects in a linked list, you can use an EachIn loop.
Types
Type | Description |
---|---|
TLink | Link Object used by TList |
TListEnum | Enumerator Object use by TList in order to implement Eachin support. |
TList | Linked List |
Functions
Function CreateList:TList()
Create a linked list
Returns
A new linked list object
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the list
ListAddLast(list,"one")
ListAddLast(list,"two")
ListAddLast(list,"three")
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
Function ClearList( list:TList )
Clear a linked list
Removes all objects from list.
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' print amount of elements in the list
Print CountList(list)
' clear the list and remove all elements
ClearList(list)
' print amount of elements in the list
Print CountList(list)
' outputs:
' 3
' 0
Function CountList( list:TList )
Count list length
Returns
The numbers of objects in list.
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' print amount of elements in the list
Print CountList(list)
' outputs:
' 3
Function ListIsEmpty( list:TList )
Check if list is empty
Returns
True if list is empty, else false
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' check if the list contains some elements
If ListIsEmpty(list) Then
Print "list is empty"
Else
Print "list contains elements"
EndIf
' outputs:
' list contains elements
Function ListContains( list:TList,value:Object )
Check if list contains a value
Returns
True if list contains value, else false
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' check if the list contains some elements
If ListContains(list, "four") Then
Print "four"
EndIf
If ListContains(list, "three") Then
Print "three"
EndIf
' outputs:
' three
Function SortList( list:TList,ascending=True,compareFunc( o1:Object,o2:Object ) )
Sort a list
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "short")
ListAddLast(list, "longer")
ListAddLast(list, "the longest")
' DEFAULT SORT
' sort them (in this case this leads to an alphabetic sort)
' second parameter sets sort to ascending or not
SortList(list, True)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' longer
' short
' the longest
' CUSTOM SORT
' define a custom compare function
Function MyCompare:Int( o1:Object, o2:Object )
If Len(String(o1)) < Len(String(o2)) Then
Return -1 ' o1 before o2
ElseIf Len(String(o1)) > Len(String(o2)) Then
Return 1 ' o1 after o2
Else
Return 0 ' equal
EndIf
End Function
' sort them with a custom compare function
SortList(list, True, MyCompare)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' short
' longer
' the longest
Function ListFromArray:TList( arr:Object[] )
Create a list from an array
Returns
A new linked list
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create an array holding some objects
Local objects:Object[] = ["one", "two", "three"]
' create a linked list out of the elements
Local list:TList = ListFromArray(objects)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' one
' two
' three
Function ListToArray:Object[]( list:TList )
convert a list to an array
Returns
An array of objects
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' create an array out of the list elements
Local objects:Object[] = ListToArray(list)
' enumerate all the strings in the array
For Local a:String = EachIn objects
Print a
Next
' outputs:
' one
' two
' three
Function SwapLists( list_x:TList,list_y:TList )
Swap the contents of 2 lists
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' create a second list
Local list2:TList = CreateList()
ListAddLast(list2, "four")
ListAddLast(list2, "five")
ListAddLast(list2, "six")
' swap the lists
SwapLists(list, list2)
' enumerate all the strings in the first list
For Local a:String = EachIn list
Print a
Next
' outputs:
' four
' five
' six
Function ReverseList( list:TList )
Reverse the order of elements of a list
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' reverse the list
ReverseList(list)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' three
' two
' one
Function ListFindLink:TLink( list:TList,value:Object )
Find a link in a list
Returns
The link containting value
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the begin of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' find the TLink instance of the element/object "two"
Local link:TLink = ListFindLink(list, "two")
' remove the element from the list by utilizing the link
ListRemoveLink(list, link)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' one
' three
Function ListRemoveLink( list:TList,link:TLink )
Remove an object from a linked list referenced by a link
ListRemoveLink removes an object from the linked list referenced by the given link
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the begin of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' find the TLink instance of the element/object "two"
Local link:TLink = ListFindLink(list, "two")
' remove the element from the list by utilizing the link
ListRemoveLink(list, link)
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' one
' three
Function ListAddLast:TLink( list:TList,value:Object )
Add an object to a linked list
Returns
A link object
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the end of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' one
' two
' three
Function ListGetFirst:Object( list:TList )
Returns the first object in the list
Returns Null if the list is empty.
Function ListGetLast:Object( list:TList )
Returns the last object in the list
Returns Null if the list is empty.
Function ListAddFirst:TLink( list:TList,value:Object )
Add an object to a linked list
Returns
A link object
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the begin of the list
ListAddFirst(list, "one")
ListAddFirst(list, "two")
ListAddFirst(list, "three")
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' three
' two
' one
Function ListRemoveFirst:Object( list:TList )
Removes and returns the first object in the list.
Returns Null if the list is empty.
Function ListRemoveLast:Object( list:TList )
Removes and returns the last object in the list.
Returns Null if the list is empty.
Function ListRemove( list:TList,value:Object )
Remove an object from a linked list
ListRemove scans a list for the specified value and removes its link.
Example
SuperStrict
Framework Brl.LinkedList
Import Brl.StandardIO
' create a list to hold some objects
Local list:TList = CreateList()
' add some string objects to the begin of the list
ListAddLast(list, "one")
ListAddLast(list, "two")
ListAddLast(list, "three")
' remove the string "two"
ListRemove(list, "two")
' enumerate all the strings in the list
For Local a:String = EachIn list
Print a
Next
' outputs:
' one
' three