这可能吗还是会有一个丢失的名单?因为我不能检查它是否工作

void FreeRecurs(struct nodeTag *pFirst)
{
    if(pFirst != NULL)
    {
            FreeRecurs(pFirst -> pNext);
            free(pFirst);
    }
}

最佳答案

这是可行的,但在长列表中,可能会出现堆栈溢出,因为您经常递归,而且不使用尾部递归我将转到一个迭代版本:
当前节点不为空时:
存储指向下一个节点的指针。
释放当前节点。
使用释放之前存储的指针开始处理下一个节点。

10-06 12:02