I almost only use linked lists. Its just great way of handling objects. If using BlitzMax you can easily convert between lists and arrays, so unless you have experiencing performance problems using lists, then I would advice to stick with them. Here is an example of a BlitzMax function that swap two objects within a list by utilizing the link-to-array and array-to-link conversion. This should give you an idea about how they can be utilized.
Function swapListLinks(list:TList Var, s:Int, d:Int)
	Local o:Object, ar:Object[]
	ar = ListToArray(list)
	o = ar[s]
	ar[s] = ar[d]
	ar[d] = o
	list = ListFromArray(ar)
End Function
The parameters are first the list, then the two positions of the objects in the lists to swap. Because the command word "Var" is used behind the list parameter in the function, it will use the actual variable/list within the function and make changes directly. So when the array is converted on the last line of the function, the newly arrange list is replacing the old one. I hope that made sense, otherwise feel free to ask me about it.