Common Linked List Interview Questions & Their Solutions
Introduction
Linked Lists are one of the most common data structures in coding interviews. They test your understanding of pointers, memory management, and algorithmic thinking. In this, we’ll look at some frequently asked Linked List interview questions and their Python solutions.
Question 1: Reverse a Linked List
Problem:
Given the head of a singly linked list, reverse the list.
Python Code:
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
def reverse_list(head):
    prev = None
    current = head
    while current:
        next_node = current.next
        current.next = prev
        prev = current
        current = next_node
    return prev
Key Idea:
We use three pointers (prev, current, next_node) to reverse the direction of links one by one.
Question 2: Find the Middle Node of a Linked List
Problem:
Return the middle node of a linked list in one traversal.
Python Code:
def find_middle(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
    return slow
Concept:
Use the two-pointer technique — the fast pointer moves twice as fast as the slow one.
Question 3: Detect a Cycle in a Linked List
Problem:
Check whether a linked list contains a cycle.
Python Code:
def has_cycle(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
        if slow == fast:
            return True
    return False
Concept:
This uses Floyd’s Cycle Detection Algorithm (also called the Tortoise and Hare algorithm).
Question 4: Merge Two Sorted Linked Lists
Problem:
Combine two sorted linked lists into a single sorted list.
Python Code:
def merge_sorted_lists(l1, l2):
    dummy = Node(0)
    tail = dummy
    while l1 and l2:
        if l1.data < l2.data:
            tail.next = l1
            l1 = l1.next
        else:
            tail.next = l2
            l2 = l2.next
        tail = tail.next
    tail.next = l1 or l2
    return dummy.next
Question 5: Remove Duplicates from a Sorted Linked List
Python Code:
def remove_duplicates(head):
    current = head
    while current and current.next:
        if current.data == current.next.data:
            current.next = current.next.next
        else:
            current = current.next
    return head
Question 6: Find the Nth Node from the End
Problem:
Given the head of a linked list, find the Nth node from the end in one pass.
Python Code:
def nth_from_end(head, n):
    first = second = head
    for _ in range(n):
        if not first:
            return None
        first = first.next
    while first:
        first = first.next
        second = second.next
    return second
Concept:
Move the first pointer n steps ahead, then move both pointers until the first reaches the end.
Question 7: Delete a Node Without Head Pointer
Problem:
You’re given only a pointer to a node to delete (not the head). Delete the node efficiently.
Python Code:
def delete_node(node):
    if node and node.next:
        node.data = node.next.data
        node.next = node.next.next
Concept:
Copy the data of the next node and bypass it — no need for head reference.
Question 8: Check if Two Linked Lists Intersect
Problem:
Determine whether two linked lists intersect and return the intersection point.
Python Code:
def get_intersection_node(headA, headB):
    a, b = headA, headB
    while a != b:
        a = a.next if a else headB
        b = b.next if b else headA
    return a
Concept:
Both pointers traverse each list and then switch — ensuring equal traversal length.
Question 9: Remove Nth Node from End
Problem:
Remove the Nth node from the end of a linked list.
Python Code:
def remove_nth_from_end(head, n):
    dummy = Node(0)
    dummy.next = head
    first = second = dummy
    for _ in range(n + 1):
        first = first.next
    while first:
        first = first.next
        second = second.next
    second.next = second.next.next
    return dummy.next
Concept:
Use a dummy node and two-pointer approach to simplify deletion logic.
Question 10: Check if a Linked List is a Palindrome
Problem:
Return True if the linked list reads the same forward and backward.
Python Code:
def is_palindrome(head):
    slow = fast = head
    stack = []
    while fast and fast.next:
        stack.append(slow.data)
        slow = slow.next
        fast = fast.next.next
    if fast:
        slow = slow.next
    while slow:
        if stack.pop() != slow.data:
            return False
        slow = slow.next
    return True
Concept:
Use a stack to compare the first half and the reversed second half of the list.
Summary
You’ve now learned 10 of the most frequently asked Linked List interview questions, covering:
- Traversal and manipulation
- Two-pointer techniques
- Cycle and intersection logic
- Palindrome detection
These are essential for coding interviews at top companies (TCS, Infosys, Wipro, etc.) and for competitive programming practice.
.png)
Comments
Post a Comment