删除链表节点而不递归

时间:2016-07-08 09:19:44

标签: c recursion linked-list

我有一个双向链表数据结构,如下所示:

enter image description here

节点结构如下:

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 个答案:

没有答案