这可能吗还是会有一个丢失的名单?因为我不能检查它是否工作
void FreeRecurs(struct nodeTag *pFirst)
{
if(pFirst != NULL)
{
FreeRecurs(pFirst -> pNext);
free(pFirst);
}
}
最佳答案
这是可行的,但在长列表中,可能会出现堆栈溢出,因为您经常递归,而且不使用尾部递归我将转到一个迭代版本:
当前节点不为空时:
存储指向下一个节点的指针。
释放当前节点。
使用释放之前存储的指针开始处理下一个节点。