Another critical difference between a linked list and an array is in its mutation operations, especially shifting. To shift an array (supposing "array" means approximately what it does in C) you have to move all the elements. To shift a linked list you simply re-point the head pointer elsewhere and throw away (or use) the removed elements. There are pros and cons to both of these structures when it comes to efficiency and thread-safety.