# List Data Structures

A list (aka collection or container) is a logical grouping of data items into a single unit. Lists enable operations such as inserting new items, searching through existing items, deleting items, and enumerating existing items. There are several common list data structures and different structures have different capabilities/performance characteristics.

In the author’s humble opinion, comprehension of list data structures is the first concept that an aspiring programmer should master because list manipulation is the single most common programming task. So common in fact that all mainstream languages have builtin list abstractions. For instance, LISP, which stands for LISt Processor, is designed entirely around the concept. C# has the IEnumerable interface, Java has the Iterable interface, Python has list. There are many more examples but there is no need to belabor the point.

List data structures have differing strengths, weaknesses, and capabilities. Therefore, it’s important to fully understand list abstractions in order to choose the correct one. Sometimes choosing the right one is easy because a particular utility is required. Contrarily, it’s possible to choose one that will meet the software requirements but have a prodigious negative impact on performance.

## Source Code

Full Repo

Relevant Directories: