Microsoft Interview Question

Start with a random linked list--a linked list with a second node pointer that can point to some random node in the list, or to nothing at all. Implement a method that will generate a deep copy of the list