• Linked lists are linear and unidirectional. As soon as you move a reference from one node to another, you can’t go back.
• Linked lists have a O(1) time complexity for head first insertions. Arrays have O(n) time complexity for head-first insertions.
• Conforming to Swift collection protocols such as Sequence and Collection offers a host of helpful methods for few requirements.
• Copy-on-write behavior lets you achieve value semantics.
• Removing the last node of the list is somewhat inconvenient. Although you have a reference to the tail node, you can’t chop it off without having a reference to the node before it. Thus, you’ll have to do an arduous O(n) traversal.