ノード削除のこの実装は機能しますか、それとも失敗しますか?
void remove_node(node *p)
{
node **i = &node_list;
for (;(*i) != NULL && ((*i) != p); *i = ((*i)->next)) ;
if (*i != NULL)
{
(*i) = (*i)->next;
}
if (p != NULL)
{
free(p);
}
}
ところで、私が知る限り、リストからノードを削除するすべてのアルゴリズムで、以前のポインターを保持するはずの変数がありました。この実装にはこれが欠けています...