Bird
Raised Fist0
DSA Cprogramming~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 goal when merging two sorted linked lists?
To create a new sorted linked list that contains all elements from both lists in order.
Click to reveal answer
beginner
In merging two sorted linked lists, why do we compare the current nodes of both lists?
To decide which node has the smaller value and should be added next to the merged list, keeping the order sorted.
Click to reveal answer
intermediate
What happens when one linked list is fully traversed before the other during merging?
The remaining nodes of the other list are directly attached to the merged list since they are already sorted.
Click to reveal answer
intermediate
Show the step-by-step merge result of these two sorted lists:
List1: 1 -> 3 -> 5
List2: 2 -> 4 -> 6
Step 1: Compare 1 and 2, add 1
Step 2: Compare 3 and 2, add 2
Step 3: Compare 3 and 4, add 3
Step 4: Compare 5 and 4, add 4
Step 5: Compare 5 and 6, add 5
Step 6: Add remaining 6
Result: 1 -> 2 -> 3 -> 4 -> 5 -> 6
Click to reveal answer
intermediate
What is the time complexity of merging two sorted linked lists of lengths m and n?
O(m + n) because each node from both lists is visited exactly once during the merge.
Click to reveal answer
What should you do when the current node of List1 has a smaller value than List2 during merging?
AAdd List2's node to the merged list and move List2's pointer forward
BRestart the merge
CSkip both nodes
DAdd List1's node to the merged list and move List1's pointer forward
If one list is empty, what is the merged list?
AEmpty list
BThe non-empty list as is
CA new empty list
DA reversed list
Which data structure is best suited for merging two sorted linked lists?
ALinked List
BQueue
CStack
DArray
What is the first step in merging two sorted linked lists?
ACreate a dummy node to start the merged list
BReverse both lists
CSort both lists again
DDelete duplicates
What happens if you forget to attach the remaining nodes after one list ends?
AMerged list will have duplicates
BMerged list will be sorted
CMerged list will be incomplete
DNo effect
Explain how to merge two sorted linked lists step-by-step.
Think about walking through both lists together.
You got /4 concepts.
    Describe the role of a dummy node in merging two sorted linked lists.
    Dummy node is like a placeholder before the real list.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main goal when merging two sorted linked lists?
      easy
      A. To create a new sorted linked list containing all elements from both lists
      B. To reverse both linked lists
      C. To find the maximum element in both lists
      D. To delete duplicate elements from both lists

      Solution

      1. Step 1: Understand the merge operation

        Merging two sorted linked lists means combining their elements into one list that remains sorted.
      2. Step 2: Identify the goal

        The goal is to create a new sorted linked list that contains all elements from both input lists in order.
      3. Final Answer:

        To create a new sorted linked list containing all elements from both lists -> Option A
      4. Quick Check:

        Merge = combine sorted lists [OK]
      Hint: Merging means combining sorted lists into one sorted list [OK]
      Common Mistakes:
      • Thinking merge reverses lists
      • Confusing merge with finding max element
      • Assuming merge removes duplicates
      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; struct Node* next; };
      B. struct Node { int data; Node* next; };
      C. struct Node { int data; struct Node next; };
      D. struct Node { int data; struct Node* prev; };

      Solution

      1. Step 1: Check struct syntax for linked list node

        In C, a node contains data and a pointer to the next node. The pointer must be declared as 'struct Node* next;'.
      2. Step 2: Identify correct declaration

        struct Node { int data; struct Node* next; }; correctly declares 'struct Node' with 'int data' and 'struct Node* next;'. struct Node { int data; Node* next; }; misses 'struct' keyword before Node*, struct Node { int data; struct Node next; }; incorrectly uses 'struct Node next;' (not a pointer), and struct Node { int data; struct Node* prev; }; uses 'prev' which is for doubly linked lists.
      3. Final Answer:

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

        Node struct needs pointer to next node [OK]
      Hint: Node pointer must use 'struct Node*' in C [OK]
      Common Mistakes:
      • Omitting 'struct' keyword before Node*
      • Using node instead of pointer for next
      • Confusing singly linked list with doubly linked list
      3. What will be the output linked list after merging these two sorted linked lists?

      List1: 1 -> 3 -> 5 -> NULL
      List2: 2 -> 4 -> 6 -> NULL

      Assuming the merge function merges correctly.
      medium
      A. 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> NULL
      B. 2 -> 4 -> 6 -> 1 -> 3 -> 5 -> NULL
      C. 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL
      D. 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> NULL

      Solution

      1. Step 1: Compare elements from both lists in order

        Start with heads: 1 (List1) and 2 (List2). 1 < 2, so 1 goes first. Then compare 3 and 2, 2 < 3, so 2 goes next. Continue this way to merge in sorted order.
      2. Step 2: Build merged list step-by-step

        Merged list: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL.
      3. Final Answer:

        1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL -> Option C
      4. Quick Check:

        Merge keeps sorted order [OK]
      Hint: Pick smaller node each step to merge sorted lists [OK]
      Common Mistakes:
      • Appending one list after the other without sorting
      • Reversing the order accidentally
      • Skipping nodes during merge
      4. Consider this buggy merge function snippet in C:
      struct Node* merge(struct Node* l1, struct 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;
          }
      }

      What is the main issue if this function is called with two sorted lists?
      medium
      A. It reverses the merged list
      B. It merges lists correctly without issues
      C. It loses nodes when one list is empty
      D. It causes infinite recursion when lists have equal elements

      Solution

      1. Step 1: Analyze base cases

        If one list is empty (!l1 or !l2), it correctly returns the other list.
      2. Step 2: Analyze recursive case

        If l1->data < l2->data, it sets l1->next to the merge of the rest and returns l1. Otherwise, sets l2->next to merge(l1, l2->next) and returns l2. However, when l1->data == l2->data, the else branch is taken repeatedly without advancing l1, causing infinite recursion.
      3. Final Answer:

        It causes infinite recursion when lists have equal elements -> Option D
      4. Quick Check:

        Equal elements cause infinite recursion due to no advancement in l1 [OK]
      Hint: Recursive merge must handle equal elements to avoid infinite recursion [OK]
      Common Mistakes:
      • Thinking equal elements cause infinite recursion
      • Believing it loses nodes on empty lists
      • Assuming it reverses the list
      5. You have two sorted linked lists:
      List1: 1 -> 4 -> 7 -> NULL
      List2: 2 -> 4 -> 6 -> 8 -> NULL

      Write the merged sorted linked list after merging them and removing duplicate values.
      hard
      A. 1 -> 4 -> 7 -> 2 -> 4 -> 6 -> 8 -> NULL
      B. 1 -> 2 -> 4 -> 6 -> 7 -> 8 -> NULL
      C. 1 -> 2 -> 4 -> 4 -> 6 -> 7 -> 8 -> NULL
      D. 1 -> 2 -> 6 -> 7 -> 8 -> NULL

      Solution

      1. Step 1: Merge lists in sorted order

        Merge elements: 1, 2, 4, 4, 6, 7, 8.
      2. Step 2: Remove duplicate values

        Remove one of the duplicate 4's to get: 1 -> 2 -> 4 -> 6 -> 7 -> 8 -> NULL.
      3. Final Answer:

        1 -> 2 -> 4 -> 6 -> 7 -> 8 -> NULL -> Option B
      4. Quick Check:

        Merge + remove duplicates = sorted unique list [OK]
      Hint: Merge then skip duplicates for unique sorted list [OK]
      Common Mistakes:
      • Leaving duplicates in merged list
      • Appending lists without sorting
      • Removing unique elements by mistake
      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