Bird
Raised Fist0
DSA C++programming~5 mins

Merge Two Sorted Linked Lists in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind merging two sorted linked lists?
We compare the first nodes of both lists and pick the smaller one to add to the new list. We repeat this until all nodes are merged in sorted order.
Click to reveal answer
beginner
Why do we use a dummy node when merging two sorted linked lists?
A dummy node helps simplify the code by providing a fixed starting point. It avoids checking if the new list is empty before adding nodes.
Click to reveal answer
beginner
In merging two sorted linked lists, what happens when one list is empty before the other?
We simply attach the remaining nodes of the non-empty list to the merged list because they are already sorted.
Click to reveal answer
intermediate
What is the time complexity of merging two sorted linked lists of sizes m and n?
The time complexity is O(m + n) because we visit each node exactly once to merge them.
Click to reveal answer
beginner
Show the step-by-step merge result of lists: 1 -> 3 -> 5 and 2 -> 4 -> 6.
Step 1: Compare 1 and 2, pick 1 Step 2: Compare 3 and 2, pick 2 Step 3: Compare 3 and 4, pick 3 Step 4: Compare 5 and 4, pick 4 Step 5: Compare 5 and 6, pick 5 Step 6: Attach remaining 6 Final merged list: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null
Click to reveal answer
What is the first step when merging two sorted linked lists?
AReverse both lists
BDelete duplicates
CSort both lists again
DCompare the first nodes of both lists
Why is a dummy node useful in merging linked lists?
AIt stores the final merged list
BIt deletes duplicate nodes
CIt helps avoid extra checks for the head node
DIt sorts the nodes automatically
If one list is empty, what do we do during merge?
AAttach the remaining nodes of the other list
BStart over
CDelete the other list
DReverse the non-empty list
What is the time complexity of merging two sorted linked lists?
AO(m * n)
BO(m + n)
CO(m^2 + n^2)
DO(1)
After merging 1 -> 4 and 2 -> 3, what is the merged list?
A1 -> 2 -> 3 -> 4
B1 -> 4 -> 2 -> 3
C2 -> 3 -> 1 -> 4
D4 -> 3 -> 2 -> 1
Explain how to merge two sorted linked lists step-by-step.
Think about how you merge two sorted piles of cards.
You got /5 concepts.
    Describe why using a dummy node simplifies merging linked lists.
    Imagine having a placeholder to build your new list.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main goal when merging two sorted linked lists into one sorted linked list?
      easy
      A. Sort each list separately before merging
      B. Reverse the order of nodes in both lists
      C. Combine nodes from both lists maintaining sorted order
      D. Remove duplicate nodes from both lists

      Solution

      1. Step 1: Understand the merge operation

        Merging means combining two lists into one while keeping the order sorted.
      2. Step 2: Maintain sorted order during merge

        We pick the smaller node from the heads of both lists repeatedly to keep the merged list sorted.
      3. Final Answer:

        Combine nodes from both lists maintaining sorted order -> Option C
      4. Quick Check:

        Merge = Combine sorted lists [OK]
      Hint: Always pick the smaller node first to keep order [OK]
      Common Mistakes:
      • Trying to reverse lists instead of merging
      • Sorting lists again after merging
      • Ignoring order and just concatenating
      2. Which of the following is the correct way to declare a node structure for a singly linked list in C++?
      easy
      A. struct Node { int data; Node next; };
      B. class Node { int data; Node next; };
      C. class Node { int data; Node* next; };
      D. struct Node { int data; Node* next; };

      Solution

      1. Step 1: Understand node structure in C++

        A node should have data and a pointer to the next node.
      2. Step 2: Check pointer usage

        Using Node* next is correct to point to the next node; Node next would cause infinite size error.
      3. Final Answer:

        struct Node { int data; Node* next; }; -> Option D
      4. Quick Check:

        Node pointer = Node* next [OK]
      Hint: Use pointers for next node in linked list [OK]
      Common Mistakes:
      • Using object instead of pointer for next node
      • Missing semicolon after struct
      • Using class without access specifier
      3. What will be the output linked list after merging these two sorted lists?
      List1: 1 -> 3 -> 5 -> null
      List2: 2 -> 4 -> 6 -> null
      Using a standard merge algorithm?
      medium
      A. 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null
      B. 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> null
      C. 2 -> 4 -> 6 -> 1 -> 3 -> 5 -> null
      D. 1 -> 2 -> 4 -> 3 -> 5 -> 6 -> null

      Solution

      1. Step 1: Compare heads of both lists

        Start with 1 (List1) and 2 (List2). 1 is smaller, so first node is 1.
      2. Step 2: Continue picking smaller nodes

        Next compare 3 and 2, pick 2; then 3 and 4, pick 3; then 5 and 4, pick 4; then 5 and 6, pick 5; finally 6.
      3. Final Answer:

        1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null -> Option A
      4. Quick Check:

        Sorted merge = 1,2,3,4,5,6 [OK]
      Hint: Pick smaller head node repeatedly [OK]
      Common Mistakes:
      • Appending one list after the other without sorting
      • Mixing node order incorrectly
      • Skipping nodes during merge
      4. Given the following code snippet to merge two sorted linked lists, what is the error?
      Node* merge(Node* l1, Node* l2) {
        if (!l1) return l2;
        if (!l2) return l1;
        if (l1->data < l2->data) {
          l1->next = merge(l1->next, l2);
          return l1;
        } else {
          l2->next = merge(l1, l2->next);
          return l2;
        }
      }
      medium
      A. No error, code correctly merges two sorted lists
      B. Missing base case for empty lists
      C. Incorrect comparison operator used
      D. Function does not handle cyclic lists

      Solution

      1. Step 1: Check base cases

        Code returns the other list if one is empty, which is correct.
      2. Step 2: Check recursive merge logic

        It compares data correctly and recursively merges the rest, returning the smaller node.
      3. Final Answer:

        No error, code correctly merges two sorted lists -> Option A
      4. Quick Check:

        Recursive merge logic correct [OK]
      Hint: Check base cases and recursion carefully [OK]
      Common Mistakes:
      • Forgetting to return merged list
      • Wrong base case conditions
      • Using wrong pointers in recursion
      5. You have two sorted linked lists:
      List1: 1 -> 4 -> 5 -> 7 -> null
      List2: 2 -> 3 -> 6 -> 8 -> 9 -> null
      Write the merged list after merging them. Then, if you want to remove duplicates from the merged list, what will be the final list?
      Assume duplicates can appear after merge.
      hard
      A. Merged: 1 -> 4 -> 5 -> 7 -> 2 -> 3 -> 6 -> 8 -> 9 -> null; After removing duplicates: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null
      B. Merged: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null; After removing duplicates: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null
      C. Merged: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null; After removing duplicates: 1 -> 2 -> 3 -> 4 -> 5 -> null
      D. Merged: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null; After removing duplicates: 1 -> 4 -> 5 -> 7 -> 2 -> 3 -> 6 -> 8 -> 9 -> null

      Solution

      1. Step 1: Merge both sorted lists

        Pick nodes in order: 1,2,3,4,5,6,7,8,9 forming a sorted merged list.
      2. Step 2: Remove duplicates if any

        Since all values are unique, the list remains the same after removing duplicates.
      3. Final Answer:

        Merged: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null; After removing duplicates: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> null -> Option B
      4. Quick Check:

        Sorted merge with unique values [OK]
      Hint: Merge sorted, then remove duplicates if any [OK]
      Common Mistakes:
      • Concatenating lists without sorting
      • Assuming duplicates always exist
      • Removing nodes incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard