Linked lists are among the most common and easiest data structures. They may be used to implement various other common abstract data types, including queues, stacks, symbolic expressions, and associative arrays, though it is not uncommon to execute the other data structures directly without using a list as the basis of implementation.
The principal benefit of a linked list over a conventional array is that the list components can easily be removed or inserted without reorganization or reallocation of the entire structure because the data items have not be stored contiguously in disk or on memory. Linked lists allow removal and insertion of nodes at any point in the list, and may do so with a constant number of functions if the link previous to the link being removed or added is maintained during list traversal.
On the other hand, simple linked lists by themselves do not allow random access to the data, or any form of accurate indexing. Thus, many basic operations - such as obtaining the last node of the list, or finding a node that retain a given locating, or datum the place where a new node could be inserted - may need scanning all or most of the list components.