Copiar una lista vinculada

typedef struct Node
{
  int data;
  Node *next;
  Node *other;
};

Node *pHead;

pHead es una lista individualmente vinculada. losnext El campo apunta al siguiente elemento de la lista. losother el campo puede apuntar a cualquier otro elemento (podría ser uno de los nodos anteriores o uno de los nodos anteriores) en la lista oNULL.

¿Cómo se escribe una función de copia que duplica la lista vinculada y su conectividad? Ninguno de los elementos (next yother) en la nueva lista debe apuntar a cualquier elemento de la lista anterior.