Нюанс в том как реализован метод get. Он возвращает не значение элемента списка ("a", например), а объект представляющий элемент списка, ячейку: {value: "a", next: null}. Метод add же ожидает что в аргументе будет значение элемента списка. clone выражен через get и add, и как следствие, добавляет в клонируемый список не значение элемента откуда клонируешь, а саму ячейку списка ({value: "a", next: null}).
Быстрая демонстрация как сделать чтобы код заработал.
// было
cloned.add(this.get(s), s);
// стало
cloned.add(this.get(s).value, s);
Мне кажется концептуально спутаны задачи метода get (получение значение элемента списка и ячейки списка). Я бы подумал о том чтобы сделать 2 get-а. Ячейки и самого значения.