Copier la liste liée désignée par un paramètre

J’essaie d’implémenter une fonction qui fera une copie de la liste pointée par paramètre. Je stocke les pointeurs principaux sur les nœuds d’un tableau et le paramètre correspond à son index. Ceci est ma tentative:

void copy(node **array, int *amount_of_lists, int parameter) { node *current = array[parameter]; array[(*amount_of_lists) - 1] = malloc(sizeof(node)); node *new_list = array[(*amount_of_lists) - 1]; while(current->next != NULL) { new_list->next = malloc(sizeof(node)); new_list->str = current->str; current = current->next; new_list = new_list->next; } } 

Avant d’appeler la fonction de copie, j’alloue de la mémoire au nouveau pointeur principal du tableau mentionné (dernier index (nombre de listes – 1)). Malheureusement, quelque chose ne va pas dans cette fonction; est-ce que quelqu’un sait à quoi ça devrait ressembler?