【发布时间】:2014-04-24 04:48:06
【问题描述】:
我一直在尝试找出一种递归方式来删除节点(从链表中的任何位置),而不会留下任何内存泄漏。
这可能吗??
这是我不起作用的非递归方式:
int removeItem(struct ListNode** headRef, int data)
{
struct ListNode* temp = *headRef; // store original head
int val = data;
while (temp->next != NULL)
{
if (temp->next->data != val)
{
temp = temp->next;
}
else if (temp->next->data == val)
{
temp = temp->next;
free(temp);
return 1;
}
else
{
return 0;
}
}
return 0;
}
【问题讨论】:
-
让我们看看你的代码,你可能已经接近了。
-
使前一个入口指向下一个入口,然后释放与已删除入口相关的内存。
-
我不确定您所说的“递归方式”是什么意思,因为从列表中删除节点只是一个步骤
-
我想使用递归来简化函数,但我无法将我的大脑围绕它...
标签: c recursion linked-list nodes