struct Node
{
int id;
Node* next;
};
bool RemoveNode(Node** head,Node* target)
{
Node ** cur = head;
Node* entry=*head;
for(;*cur;)
{
entry = (*cur);
if(entry==target)
{
*cur=entry->next;
delete entry
return true;
}
else
{
cur=&(entry->next);
}
}
return false;
}
这段代码的巧妙之处,使用二级指针代替了前向结点指针,而且不用判断首节点。
原理是解引用运算符* 既可以当左值,又可以当右值。