* linked list (LL) = doubly linked list
* array list (AL) = re-sizable array
LL advantages:
* operation at both ends. stack, queue, dequeue. No resizing required.
AL advantages:
* random access by index lookup. get or set.
AL add() and remove() require shifting or copying.
LL add() and remove() need a traversal from either end to locate the slot.