Блок задач

3. Структуры данных

Темы
Сложность 4

Задача «Урезание списка»

Реализовать функцию удаления подсписка.

SList *slist_slice(SList *head, size_t start, size_t length,
                   void (*destruct)(void *data));

Возвращает часть списка, начинающуюся с индекса start и имеющую максимальную длину length. Остальные элементы списка должны быть освобождены. При этом для на каждый освобождаемый элемент вызывается функция по указателю destruct (в качестве аргумента ей передается element->data). Если destruct == 0, то никакой функции не вызывается.

Задача опирается на «Связанные списки».