Properties of Linked List
Properties of Linked List
class Node{
int val // variable storing the data of each node
Node next // variable storing the address of the next blog
}
The first node of the linked list is called the head of the linked list . Through
head, we can perform different operations on the linked list. In every linked list
question, we will be given the reference of the head node of the linked list.
The last node of the linked list is pointing to NULL (None) which indicates that it
is the last node.
Unlike arrays, linked list elements are not stored at contiguous memory locations.
Linked Lists addresses some of the limitations of arrays of having a fixed size
because Linked Lists are dynamic in nature.
The following is the structure of the node in the Doubly Linked List(DLL):
class DLLNode {
int val // variable to store the data of the node
DLLNode prev // variable to store the address of the previous node
DLLNode next // variable to store the address of the next node
}
The nodes are connected to each other in this form where the first node has prev =
NULL and the last node has next = NULL .
VSRGDC
It will require more space as each node has an extra memory to store the address
of the previous node.
The number of modification increase while doing various operations like
insertion, deletion, etc.
If not traversed carefully, then we could end up in an infinite loop because here we
don't have any NULL value to stop the traversal.
Operations in a circular linked list are complex as compared to a singly linked list
and doubly linked list like reversing a circular linked list, etc.
class Node{
int data // variable containing the data of the node
Node next // variable containing the address of next node
}
Start with the head of the list. Access the content of the head node if it is not null.
Then go to the next node(if exists) and access the node information
Continue until no more nodes (that is, you have reached the null node)
void traverseLL(Node head) {
VSRGDC
while(head != NULL)
{
print(head.data)
head = head.next
}
}
We will traverse the list until we find the last node. Then we insert the new node to the
end of the list. Note that we have to consider special cases such as list being empty.
In case of a list being empty, we will return the updated head of the linked list because in
this case, the inserted node is the first as well as the last node of the linked list.
We are given the reference to a node, and the new node is inserted after the given node.
newNode.next = prevNode.next
prevNode.next = newNode
}
NOTE: If the address of the prevNode is not given, then you can traverse to that node
by finding the data value.
Below is the implementation in which we had to update the value of the first node in
which data is equal to val and we have to set it to newVal .
Array and Linked List are the two most used data structures. It's really important to
understand and compare the advantages and disadvantages of both array and linked
list. In this blog, we will compare these two linear data structures. So let’s get starte d.
To start of the things, we will take some parameters through which we can compare both
the data structures.
Structure
Array and Linked list are used to store linear data of similar type but the major
difference between them is related to their structure. Arrays are an index-based data
structure where each element is associated with an index. On the other hand, Linked list
relies on references of where the next element in the list is stored, the last element of
the linked list refers to NULL denoting that its the end of the list.
Arrays
Linked List
Size
Arrays have fixed size and it is required to know the size of the array at the time of
declaration whereas Linked List is not restricted to size and can be expanded during the
execution. So, Linked lists are dynamic, flexible.
Memory Required
VSRGDC
The memory required to store data in the linked list is more than that of an array
because of additional memory used to store the address/references of the next node.
Storage Allocation
In an array, memory is assigned during compile time while in a Linked list it is allocated
during execution or runtime.
The elements in the array are stored at contiguous positions in the memory whereas the
elements in the linked list are stored at random positions.
Accessing Time
Elements in the array can be accessed using it’s index i.e. if you want to get into the
fourth element you have to write the array variable name with its index or location
within the square bracket. But, in a linked list, you have to start from the head and
iterate until you get to the fourth element.
The elements in an array can be directly and sequentially accessed but in a linked list
only sequential access is possible. To conclude, accessing an element in an array is fast
and is a constant time operation whereas, in a linked list, it takes linear time.
Memory utilization
Memory utilization is inefficient in the array as we need to declare the size of the array
during the time of declaration. Conversely, memory utilization is efficient in the linked
list.
Insertion/ Deletion
Operations like insertion and deletion in arrays consume a lot of time as shifting of
elements are required but these operations are easy, fast and efficient in linked lists.
Conclusion
From the above points, we can conclude that Array and Linked lists are the types of data
structures that differ in their structure, accessing and manipulation methods, memory
requirement, and utilization and have particular advantages and disadvantages over its
implementation.
Linked List: Dynamic Size, Fast insertion, and deletion once the element is reached
Arrays: Fast Random element access and requires less memory per element
VSRGDC