Linked List Interview Questions
A list of top frequently asked Linked List Interview Questions and answers are given below.
1) Explain Linked List in short.
A linked list may be defined as a linear data structure which can store a collection of items. In another way, the linked list can be utilized to store various objects of similar types. Each element or unit of the list is indicated as a node. Each node contains its data and the address of the next node. It is similar to a chain. Linked lists are used to create graphs and trees.
2) How will you represent a linked list in a graphical view?
A linked list may be defined as a data structure in which each element is a separate object. Linked list elements are not kept at the contiguous location. The pointers are used to link the elements of the Linked List.
Each node available in a list is made up of two items- the data itself and a reference (also known as a link) to the next node in the sequence. The last node includes a reference to null. The starting point into a linked list is known as the head of the list. It should be noted that the head is a reference to the first node, not a separate node. The head is considered as a null reference if the list is empty.
3) How many types of Linked List exist?
There are multiple types of Linked Lists available:
4) Explain Singly Linked List in short.
The singly linked list includes nodes which contain a data field and next field. The next field further points to the next node in the line of nodes.
In other words, the nodes in singly linked lists contain a pointer to the next node in the list. We can perform operations like insertion, deletion, and traversal in singly linked lists.
A singly linked list is shown below whose nodes contain two fields: an integer value and a pointer value (a link to the next node).
5) What do you understand by Doubly Linked List?
The doubly linked list includes a pointer (link) to the next node as well as to the previous node in the list. The two links between the nodes may be called "forward" and "backward, "or "next" and "prev (previous)." A doubly linked list is shown below whose nodes consist of three fields: an integer value, a link that points to the next node, and a link that points to the previous node.
A technique (known as XOR-linking) is used to allow a doubly-linked list to be implemented with the help of a single link field in each node. However, this technique needs more ability to perform some operations on addresses, and therefore may not be available for some high-level languages.
Most of the modern operating systems use doubly linked lists to maintain references to active threads, processes, and other dynamic objects.
6) Explain Multiply Linked List in short.
In a multiply linked list, each node consists of two or more link fields. Each field is used to join the same set of records in a different order of the same set, e.g. "by name, by date of birth, by the department, etc.".
7) How will you explain Circular Linked List?
In the last node of a linked list, the link field often contains a null reference. Instead of including a null pointer at the end of the list, the last node in circular linked lists includes a pointer pointing to the first node. In such cases, the list is said to be ?circularly linked? otherwise it is said to be 'open' or 'linear.' A circular linked list is that type of list where the last pointer points or contains the address of the first node.
In case of a circular doubly linked list, the first node also points to the last node of the list.
8) How many pointers are necessary to implement a simple Linked List?
There are generally three types of pointers required to implement a simple linked list:
9) How can you represent a linked list node?
The simplest method to represent a linked list node is wrapping the data and the link using typedef structure. Then further assigning the structure as a Node pointer that points to the next node.
An example of representation in C can be defined as:
10) Which type of memory allocation is referred for Linked List?
Dynamic memory allocation is referred for Linked List.
11) What do you know about traversal in linked lists?
The term 'traversal' refers to the operation of processing each element present in the list.
12) What are the main differences between the Linked List and Linear Array?
13) What does the dummy header in the linked list contain?
In a linked list, the dummy header consists of the first record of the actual data.
14) Mention a few applications of Linked Lists?
Few of the main applications of Linked Lists are:
15) How can you insert a node to the beginning of a singly linked list?
To insert the node to the beginning of the list, we need to follow these steps:
16) Name some applications which use Linked Lists.
Both queues and stacks can be implemented using a linked list. Some of the other applications that use linked list are a binary tree, skip, unrolled linked list, hash table, etc.
17) Differentiate between singly and doubly linked lists?
Doubly linked list nodes consist of three fields: an integer value and two links pointing to two other nodes (one to the last node and another to the next node).
On the other hand, a singly linked list consists of a link which points only to the next node.
18) What is the main advantage of a linked list?
The main advantage of a linked list is that we do not need to specify a fixed size for the list. The more elements we add to the chain, the bigger the chain gets.
19) How can someone add an item to the beginning of the list?
Adding an item to the beginning of the list, we need to follow the given steps:
If we are using a function to do this operation, we need to alter the head variable.
20) How can someone insert a node at the end of Linked List?
This case is a little bit difficult as it depends upon the type of implementation. If we have a tail pointer, then it is simple. In case we do not have a tail pointer, we will have to traverse the list until we reach to the end (i.e., the next pointer is NULL). Then we need to create a new node and make that last node?s next pointer point to the new node.
21) How can someone insert a node in a random location of the Linked List?
If we want to insert a node in the first position or an empty list, we can insert the node easily. Otherwise, we need to traverse the list until we reach the specified position or at the end of the list. Then we can insert a new node. Inserting a node in the middle position is a little bit difficult as we have to make sure that we perform the pointer assignment in the correct order. To insert a new node in the middle, follow the steps:
Check the example below:
22) How can we delete the first node from the singly linked list?
To delete the first node from the singly linked list, we need to follow below steps:
23) How can we delete any specific node from the linked list?
If a node that we want to delete is a root node, we can delete it easily. To delete a middle node, we must have a pointer pointing to that node which is present before the node that we want to delete. So if the position is non-zero, then we run a position loop and get a pointer to the previous node.
The steps given below are used to delete the node from the list at the specified position:
24) How can we reverse a singly linked list?
To reverse the singly linked list, we are required to iterate through the list. We need to reverse the link at each step like after the first iteration, the head will point to null, and the next element will point to the head. At the end of traversal when we reach the tail of the linked list, the tail will start pointing to the second last element and will become a new head. It is because we can further traverse through all the elements from that particular node.
The steps given below can be used to reverse a singly linked list:
A linked list can also be reversed by using recursion which eliminates the use of a temporary variable.
25) How can we remove loops in a linked list? What are the functions of fast and slow pointers?
The main concept to detect and remove a loop in a linked list is to use two pointers (one slow pointer and a fast pointer). The slow pointer traverses single node at a time, whereas the fast pointer traverses twice as fast as the first one. If the linked list contains loop in it, the fast and slow pointer will be at the same node. On the other hand, if the list doesn't consist loop in it, obviously the fast pointer will reach the end before the slow pointer does. A loop is detected if these two pointers ever met. If the loop is detected, the start of the loop can help us remove the detected loop in the linked list. It is called Floyd's Cycle-Finding Algorithm. The given diagram shows how a loop looks like in a linked list:
26) What will you prefer for traversing through a list of elements between singly and doubly linked lists?
Double linked lists need more space for each node in comparison to the singly linked list. In a doubly linked list, the elementary operations such as insertion and deletion are more expensive, but they are easier to manipulate because they provide quick and easy sequential access to the list in both the directions. But, doubly linked lists cannot be used as persistent data structures. Hence, the doubly linked list would be a better choice for traversing through a list of the node.
27) Where will be the free node available while inserting a new node in a linked list?
If a new node is inserted in a linked list, the free node is found in Avail List.
28) For which header list, the last node contains the null pointer?
For grounded header list, you will find the last node containing the null pointer.
29) How can you traverse a linked list in Java?
There are several ways to traverse a linked list in Java, e.g., we can use traditional for, while, or do-while loops and go through the linked list until we reach at the end of the linked list. Alternatively, we can use enhanced for loop of Java 1.5 or iterator to traverse through a linked list in Java. From JDK 8 onwards, we have an option to use java.util.stream.Stream for traversing a linked list.
30) How to calculate the length of a singly linked list in Java?
We can iterate over the linked list and keep a count of nodes until we reach the end of the linked list where the next node will be null. The value of the counter is considered as the length of the linked list.
31) How can someone display singly linked list from first to last?
One must follow these steps to display singly linked list from first to last:
If the temp is NULL, then it means that the last node is accessed.
32) Mention some drawbacks of the linked list.
Some of the important drawbacks of the linked list are given below:
33) Mention a package that is used for Linked List class in Java.
The package that is used for Linked list in Java is java.util.
34) Mention some interfaces implemented by Linked List in Java.
Some of the main interfaces implemented by Java Linked Lists are:
35) How can we find the sum of two linked lists using Stack in Java?
To calculate the sum of the linked lists, we calculate the sum of values held at nodes in the same position. For example, we add values at first node on both the linked list to find the value of the first node of the resultant linked list. If the length of both linked lists is not equal, then we only add elements from the shorter linked list and copy values for remaining nodes from the long list.