На моем экзамене был вопрос, подобный этому, и я подумал, каковы различия в кодировании алгоритма уничтожения для уничтожения двойных и односвязных списков отдельно в C?
Если ваш тип данных позволяет вашему двусвязному списку быть кольцом, вам нужно разорвать связь с головой. Затем пройдитесь по списку, как обычно, копируя указатели и освобождая при этом go.