WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Coding Interview Essentials · Linked List Problems · question 44 of 120

Can you merge two sorted linked lists?

📕 Buy this interview preparation book: 120 Coding Interview Essentials questions & answers — PDF + EPUB for $5

Two sorted linked lists can be merged. This problem is common in IT interviews, because it demonstrates the practical application of linked list data structures. The algorithm to merge two sorted linked lists would generally be based on the "merge" process used in merge sort.

One possible way to accomplish this is by using a iterative solution, as follows:

1. Create a new head node, ‘mergedList‘.

2. Keep track of the current node in the ‘mergedList‘.

3. Set two pointers (‘list1Pointer‘ and ‘list2Pointer‘) to the heads of the two lists.

4. Compare the values at ‘list1Pointer‘ and ‘list2Pointer‘.

5. Append the lesser value to ‘mergedList‘.

6. Repeat steps 4-5 until one of the pointers reaches the end of its respective list.

7. Append the remainder of the non-empty list to ‘mergedList‘.

Here’s the pseudocode for merging two linked lists:

function mergeLists(list1Pointer, list2Pointer):
    create a new node, mergedList
    set current to mergedList
    while list1Pointer is not null and list2Pointer is not null do
        if list1Pointer.value <= list2Pointer.value then
            current.next = new Node(list1Pointer.value)
            list1Pointer = list1Pointer.next
        else
            current.next = new Node(list2Pointer.value)
            list2Pointer = list2Pointer.next
        end if
        current = current.next
    end while
    if list1Pointer is not null then
        current.next = list1Pointer
    end if
    if list2Pointer is not null then
        current.next = list2Pointer
    end if
    return mergedList.next
end function

This pseudocode assumes a singly linked list where ‘next‘ points to the next node in the list, and ‘null‘ signifies the end of the list.

The time complexity of this algorithm is linear, i.e., O(n + m), where ‘n‘ and ‘m‘ are the sizes of the two linked lists. This is because in the worst case, we need to traverse both linked lists fully to merge them. The space complexity is O(1), as we are only using a constant amount of space to store the pointers.

Of course, this is just one method of merging two sorted linked lists. There are other ways of doing this, depending on the specific requirements of the problem, such as doing it in a recursive manner instead of using an iterative approach.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Coding Interview Essentials interview — then scores it.
📞 Practice Coding Interview Essentials — free 15 min
📕 Buy this interview preparation book: 120 Coding Interview Essentials questions & answers — PDF + EPUB for $5

All 120 Coding Interview Essentials questions · All topics