An array is a data structure that stores elements of the same type in a contiguous block of memory with indexes to access each element. Arrays have fixed sizes that must be defined upon creation. Retrieving an element from an array has constant complexity but inserting or deleting has linear complexity as it may require shifting elements. A linked list stores elements in nodes with pointers to the next node. It has variable size and faster insertion/deletion in the middle but slower retrieval by index than arrays.