Following are the points in favour of Linked Lists.
(1) The size of the arrays is fixed: So we must know the upper limit on the number of elements in advance. Also, generally, the allocated memory is equal to the upper limit irrespective of the usage, and in practical uses, upper limit is rarely reached.
(2) Inserting a new element in an array of elements is expensive, because room has to be created for the new elements and to create room existing elements have to shifted.
For example, suppose we maintain a sorted list of IDs in an array id.
id = [1000, 1010, 1050, 2000, 2040, …..].
And if we want to insert a new ID 1005, then to maintain the sorted order, we have to move all the elements after 1000 (excluding 1000).
Deletion is also expensive with arrays until unless some special techniques are used. For example, to delete 1010 in id, everything after 1010 has to be moved.
So Linked list provides following two advantages over arrays
1) Dynamic size
2) Ease of insertion/deletion
Linked lists have following drawbacks:
1) Random access is not allowed. We have to access elements sequentially starting from the first node. So we cannot do binary search with linked lists.
2) Extra memory space for a pointer is required with each element of the list.
3) Arrays have better cache locality that can make a pretty big difference in performance.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Delete a Linked List node at a given position
- Swap nodes in a linked list without swapping data
- Find Length of a Linked List (Iterative and Recursive)
- A Programmer's approach of looking at Array vs. Linked List
- Linked List | Set 3 (Deleting a node)
- Linked List | Set 2 (Inserting a node)
- Linked List | Set 1 (Introduction)
- How to write C functions that modify head pointer of a Linked List?
- Check if array elements are consecutive | Added Method 3
- Sorted insert for circular linked list
- Equilibrium index of an array
- Merge Sort for Linked Lists
- Reverse a Doubly Linked List
- Reverse a linked list
- Write a function to get Nth node in a Linked List