Мне нужно реализовать вспомогательную функцию с именем copyList, имеющую один параметр, указатель на ListNode. Эта функция должна вернуть указатель на первую node копии исходного связанного списка. Другими словами, мне нужно закодировать функцию в С++, которая берет заголовок node связанного списка и копирует весь связанный список, возвращая указатель на новый заголовок node. Мне нужна помощь в реализации этой функции, и это то, что я имею прямо сейчас.
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;
}
Кроме того, это структура Listnode, с которой я работаю:
struct Listnode {    
  Student *student;
  Listnode *next;
};
Примечание. Другим фактором, с которым я столкнулся с этой функцией, является идея возврата указателя на локальную переменную.