an HCL GUVI product

Linked Lists - DSA Interview Questions

Linked lists are a fundamental data structure used for efficient memory management and dynamic data storage. Mastering linked list operations such as insertion, deletion, and traversal is essential for solving complex coding problems in technical interviews.

Practice Linked Lists DSA Coding Problems with Solutions

Learning Objectives:

Learn how to implement and manipulate singly, doubly, and circular linked lists. Understand key algorithms like reversing a linked list, detecting loops, and merging sorted lists to optimize problem-solving.

Exercise Instructions:

  • Start with the first problem and attempt to solve it before checking the hint or solution.
  • Ensure you understand the logic behind each solution, as this will help you with more complex problems.
  • Use these exercises to reinforce your learning and identify areas that may require further study.

1. Reverse a Singly Linked List

Required Input:

1 2 3 4 5

Expected Output:

5 4 3 2 1 

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def reverse_list(head): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

2. Find the Middle of a Linked List

Required Input:

1 2 3 4 5 6

Expected Output:

4

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def find_middle(head): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

3. Detect a Cycle in a Linked List

Required Input:

1 2 3 4 5
2

Expected Output:

True

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def has_cycle(head): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

4. Merge Two Sorted Linked Lists

Required Input:

1 3 5
2 4 6

Expected Output:

1 2 3 4 5 6 

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def merge_lists(l1, l2): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

5. Delete a Given Node (O(1))

Required Input:

1 2 3 4
3

Expected Output:

1 2 4 

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def delete_node(node): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

6. Find the N-th Node from the End

Required Input:

1 2 3 4 5
2

Expected Output:

4

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def nth_from_end(head, n): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

7. Check if a Linked List is a Palindrome

Required Input:

1 2 3 2 1

Expected Output:

True

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def is_palindrome(head): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

8. Remove Duplicates from a Sorted Linked List

Required Input:

1 1 2 3 3 4

Expected Output:

1 2 3 4 

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def remove_duplicates(head): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

9. Insert in Sorted Linked List

Required Input:

1 3 5 7
4

Expected Output:

1 3 4 5 7 

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def insert_sorted(head, val): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

10. Find Intersection of Two Linked Lists

Required Input:

1 2 3 4 5
9 4 5

Expected Output:

4

Code In Python

class Node: def __init__(self, data): self.data = data self.next = None def get_intersection(head1, head2): # Write your logic here pass

Run Code?

Click Run Button to view compiled output

1 of 3