Скопируйте связанный список, указанный параметром

Я пытаюсь реализовать функцию, которая сделает копию списка, указанного параметром. Я храню указатели на узлы в каком-то массиве, а параметр — это просто его индекс. Это моя попытка:

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;
        }
}

Прежде чем вызывать функцию копирования, я выделяю память для нового указателя головы в указанном массиве (последний индекс (количество списков - 1)). К сожалению, в этой функции что-то не так; кто-нибудь знает, как это должно выглядеть?


person paul867    schedule 07.06.2015    source источник
comment
Как понять, что что-то не так? Как проявляется неправильность? Что говорит запуск кода под valgrind? В идеале следует создать MCVE (Как создать минимальный, полный и проверяемый пример?) или SSCCE (Короткий, автономный, правильный пример), чтобы показать, что идет не так. Он не должен быть намного длиннее кода, который вы показываете. (По крайней мере, есть основания подозревать, что либо вызывающий код неисправен, либо -1 в индексе массива вызывает сомнения.)   -  person Jonathan Leffler    schedule 07.06.2015
comment
См. также Операции со связанным списком с параметром. Тот же ОП, связанный, но немного другой вопрос. В другом нет функции copy(), но есть общие черты (array[(*amount_of_lists)-1] был подарком). (Пол — к вашему сведению: «количество» используется в английском языке для непрерывных величин, таких как количество золота или количество воды; здесь вы обычно использовали бы «число» для дискретного, исчисляемого типа объекта вместо «количества». Использование ' количество воды» не имеет смысла, но «количество списков» является ортодоксальным.)   -  person Jonathan Leffler    schedule 07.06.2015