-
Notifications
You must be signed in to change notification settings - Fork 2
Class: LinkedList
The LinkedList implements the doubly linked list data structure. It is used internally by World to store entities, but you may find it quite useful yourself.
Each element must be a table; to link them together LinkedList
sets properties in them specifying the next and previous elements. By default these properties are named _next
and _prev
, but you can specify different names in the constructor, allowing for the same table to be added to multiple lists.
all
Returns all the list's elements in a table. This involves looping through all the elements, so access this only when necessary.
first
The first element of the list.
last
The last element of the list.
length
The number of elements in the list.
initialize(nextProp, prevProp, ...) Initialises the list.
nextProp
: The property set in each element to specify the next element. Defaults to "_next".
prevProp
: The property set in each element to specify the previous element. Defaults to "_prev".
clear(complete)
Clears the list of all elements. By default it just resets first
, last
, and length
. However, if you specify complete
as true
, it will loop through all elements and set their references to the next and previous elements to nil
.
complete
: Whether or not to do a complete clear as described above. Defaults to false
.
insert(node, after)
Inserts node
in the list after after
. If you do not specify after
, and no elements are in the list, node
will be added as the first element.
node
: The element to insert.
after
: The element to insert node after. Defaults to nil
.
iterate(reverse)
Returns an iterate you can use to iterate through all the elements in the list. Example:
for e in list:iterate() do
print(e.x + e.y)
end
reverse
: If true
, the iterator returned will traverse the list in reverse. Defaults to false
.
pop()
Removes and returns the last element.
push(node)
Adds node
to the end of the list.
node
: The element to add.
remove(node)
Removes node
from the list.
node
: The element to remove.
shift()
Removes and returns the first element.
unshift(node)
Adds node
to the beginning of the list.
node
: The element to add.