Criar uma cópia duplicada da lista vinculada no tempo O (n)

Uma lista de links é fornecida com dois ponteiros, o primeiro está apontando para o próximo nó e o outro é um ponteiro aleatório. Ponteiro aleatório está apontando para qualquer nó de LinkedList. Escreva um programa completo para criar uma cópia da Lista Vinculada (c, c ++, c #), sem alterar a lista original e em O (n).

Fui questionado em uma das entrevistas e não consegui descobrir a solução. Ajuda seria apreciada.

questionAnswers(5)

yourAnswerToTheQuestion