У меня есть структура данных с двойной связью, которая выглядит следующим образом:
СтруктураNode выглядит следующим образом:
typedef struct {
int32_t type;
int32_t valueint;
double valuedouble;
struct cNODE *next;
struct cNODE *prev;
struct cNODE *child;
} cNODE;
Каждый node имеет дочерний элемент, который может указывать на другой node/дважды связанный список одного и того же элемента (node). До сих пор я использовал следующий код для удаления этой полной структуры данных:
/* 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;
}
}
Но это рекурсивная функция. У меня есть определенное требование, когда я не могу использовать рекурсию. Может ли это удаление быть реализовано без рекурсии? Любые примеры приветствуются.