第一篇博客是阿里大牛陈皓的分析
1.http://coolshell.cn/articles/8990.html/comment-page-1#comments
第二篇博客是问题的由来
2.http://wordaligned.org/articles/two-star-programming
void remove_if(node ** head, remove_fn rm)
{
for (node** curr = head; *curr; )
{
node * entry = *curr;
if (rm(entry))
{
*curr = entry->next;
free(entry);
}
else
curr = &entry->next;
}
}
虽然个人写链表一定不会那么写,容易出错,会具有头节点信息,但是看到其中的代码,不得不令人佩服,刚开书觉得代码有问题,但是调试运行却是正确的,最后和两位博士讨论了挺长时间,结果他们也被我绕进去了,最后是北大的刘博士看了一会找出了我所画的图问题所在,才豁然开朗,发现还是用二级指针容易些,且代码简洁.