Pergunta de entrevista da empresa Microsoft

Q: How would you do a deep copy of a singly linked list in which every node, besides the pointer to the next node, has an additional pointer to a random element of the list?