Разработать модуль listunit_l2с.c для поддержки двусвязных кольцевых списков.
В качестве примера - использовать предыдущую ЛР.
Необходимые функции приведены ниже. Параметры функций и возвращаемый результат определяются
студентом самостоятельно на основе требований для двусвязных кольцевых списков:
// создает узел
createNodeLC2
// вставляет узел в начало списка и возвращает вставленный узел
addFirstNodeLC2
// вставляет узел в конец списка и возвращает вставленный узел
addLastNodeLC2
// вставляет узел в список после переданного узла и возвращает вставленный узел
insertAfterNodeLC2
// уничтожает узел и устанавливает его в NULL
disposeNodeLC2
// удаляет узел из списка и возвращает удаленный узел
deleteNodeLC2
// уничтожает список и устанавливает его в NULL
disposeListLC2
// выполняет функцию func над каждым узлом списка
// если func возвращает 0, listAction завершает перебор узлов списка
typedef int (*listfunc)(char*);
listActionLC2
// выводит список в стандартный поток вывода
listOutLC2
// возвращает количество элементов в списке
listCountLC2
// Объединяет данные элементов списка в строку с использованием разделителя
// delimiter между отдельными данными.
// Полученную строку заносит в dest и возвращает в качестве результата функции.
// Длина результирующей строки не должна превышать maxsize.
// Если maxsize==0, ограничения на длину строки снимаются
// Если dest==NULL, функция самостоятельно выделяет оперативную память,
// достаточную для хранения maxsize символов. Освобождение памяти возлагается
// на программиста.
char *listSumStrLC2