
一般删除方法:
node *remove_if(node *head, remove_fn rm)
{
node *cur = head, *prev = NULL;
while(cur)
{
node *next = cur->next;
if( rm(cur) )
{
if(prev)
prev->next = next;
else
head = next;
free(cur);
}
else
prev = cur;
cur = next;
}
return head;
}二级指针删除方法:
node *remove_if(node **phead, remove_fn rm)
{
for( node **cur = phead; *cur; )
{
node *entry = *cur;
if( rm(entry) )
{
*cur = entry->next;
free(entry);
}
else
cur = &entry->next;
}
return *head;
}一个最简单的链表应该是下面的结构:

本文介绍了两种链表中元素的删除方法:一般删除方法和二级指针删除方法,并给出了相应的实现代码示例。
1030

被折叠的 条评论
为什么被折叠?



