UniLecs #Task. Merge Two Sorted Lists

Albert Davletov
UniLecs
Published in
2 min readMar 9, 2020

--

Задача: Напишите алгоритм объединения двух отсортированных связанных списков и верните указатель на новый список.

Входные данные: l1, l2 — корневые узлы списков

Вывод: l3 — результирующий список

Пример: 1->2->4, 1->3->4

Output: 1->1->2->3->4->4

Разбор

В данном алгоритме нет никакой магии, обычная логика.
Создаем два указателя для списков, а также создаем новый пустой список и указатель к нему.
Запускаем цикл покак оба указателя не равны null значению.
В цикле сравниваем значения узлов и присваиваем соот.значение новому списку, не забываем двигать указатели.

После окончания цикла, проверяем оба указателя: если какой то из них не равен null значению, значит в нем еще остались элементы, ктр присваиваем новому списку. Такая ситуация возникнет в том случае, если входные списки отличаются по длине.

Детали смотрите в реализации ниже.

Реализация

C#
C#

https://gist.github.com/unilecs/6c91654461ac3fbca94fed65560beeae

Play-test

https://dotnetfiddle.net/ZEwOmC

--

--