This is an implementation of circular double linked lists built on top of the standard LSL functions. An example double-linked list is a list containing the elements in order:
37. Every node contains the value (either
37) as well as a forward pointer to the next node and a reverse pointer to the previous element. Due to the circularity a circular list does not have a first or last element.
We can represent double-linked lists in LSL via functions that perform operations typical to linked lists. In order to prevent unwanted type conversions, all functions return lists which can then be converted to the desired type.