Linked Lists
Linked lists are an old design structure in computer science. It’s a type of storage structure that takes advantage of using the random nature of memory creation, manipulation, and storage to create essentially data storage that is easy to delete and create, since large memory blocks does not need to be allocated.
Compared to lists, they have some key pluses. Their memory size is dynamic, meaning that the memory of the object can vary over time based on how many elements are stored. Not only is the memory footprint dynamic, the memory itself is fragmented, making it easier for the memory to essentially handle them. Linked lists are the best at two categories: joining and deleting. Elements are easier to delete than in lists, since the object contract for lists — with an emphasis on arrays which should not contain empty data — is such that every item within its marked size ought to have a reference. To join new data or other linked lists, it simply needs to assign two reference pointers. This gives linked lists the gold star of constant time runtime for those two operations.
However, there are some big flaws to linked lists. Traversal is one way, unless you have a doubly-linked list, which trades even more space for a “backwards” feature. Memory is used less efficiently, since each element must have a reference to the next element, unlike a list which usually relies on the fact that the next element is the adjacent pointer to cut down on time. They are also minutely slower to access as well, given that a linked list will usually need to jump around memory, following the reference trail, until it finds the element in question.