Codificar una función para copiar una lista enlazada en C ++

Necesito implementar una función auxiliar, llamada copyList, que tenga un parámetro, un puntero a un ListNode. Esta función debe devolver un puntero al primer nodo de una copia de la lista enlazada original. Entonces, en otras palabras, necesito codificar una función en C ++ que tome un nodo de encabezado de una lista vinculada y copie toda la lista vinculada, devolviendo un puntero al nuevo nodo de encabezado. Necesito ayuda para implementar esta función y esto es lo que tengo ahora.

<code>Listnode *SortedList::copyList(Listnode *L) {

    Listnode *current = L;  //holds the current node

    Listnode *copy = new Listnode;
    copy->next = NULL;

    //traverses the list
    while (current != NULL) {
       *(copy->student) = *(current->student);
       *(copy->next) = *(current->next);

        copy = copy->next;
        current = current->next;
    }
    return copy;
}
</code>

Además, esta es la estructura de Listnode con la que estoy trabajando:

<code>struct Listnode {    
  Student *student;
  Listnode *next;
};
</code>

Nota: otro factor que estoy encontrando con esta función es la idea de devolver un puntero a una variable local.

Respuestas a la pregunta(7)

Su respuesta a la pregunta