Удаление узлов связанного списка без рекурсии

У меня есть структура данных двусвязного списка, которая выглядит следующим образом:

Структура узла выглядит следующим образом:

typedef struct {
    int32_t type;
    int32_t valueint;
    double  valuedouble;
    struct  cNODE *next;
    struct  cNODE *prev;
    struct  cNODE *child;
} cNODE;

Каждый узел имеет дочерний элемент, который может указывать на другой узел / дважды связанный список того же типа элемента (узла). До сих пор я использовал следующий код для удаления этой полной структуры данных:

/* Delete a cNODE structure. */
void cNODE_Delete(cNODE *c)
{
    cNODE*next;
    while (c)
    {
        next=c->next;
        if (!(c->type)) && c->child)
        { 
          cNODE_Delete(c->child)
        };
        free(c);
        c=next;
    }
}

Но это рекурсивная функция. У меня есть определенное требование, когда я не могу использовать рекурсию. Можно ли реализовать это удаление без рекурсии? Любые примеры приветствуются.

0 ответов

Другие вопросы по тегам