我有一个双向链表数据结构,如下所示:
节点结构如下:
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;
}
}
但这是一个递归函数。我有一定的要求,我不能使用递归。这个删除可以在没有递归的情况下实现吗?任何例子都表示赞赏。