что это за конструкция. ну вернее я знаю, что это объект класса, но зачем сразу 2 переменные? сделал вот так
Два указателя на первый элемент списка чтобы не потерять начало. curr в процессе перемещается.
curr.next = l2
l2 = l2.next
Привязываем минимальный элемент как следующий элемент нового списка, отвязываем от старого
Почему возвращаем именно dummy и next?
Потому что у нас первый элемент лежит в next, сам dummy это пустое начало нового списка
Я бы рекомендовал взять два списка с двумя-тремя элементами и пошагово посмотреть работу алгоритма или вообще нарисовать на бумаге, тогда все встанет на свои места.