C/C++の宿題やらせてください。7代目。
■ このスレッドは過去ログ倉庫に格納されています
0293172
NGNG改良版。sentryを有効活用。
int BSTdelete(keyType a_key)
{
nodeType **pp = &head;
nodeType *node;
sentry->data.key = a_key;
while (a_key != (*pp)->data.key) {
pp = (a_key < (*pp)->data.key)? &(*pp)->left : &(*pp)->right;
}
if (*pp == sentry) return 0;
node = *pp;
if (node->left == node->right) *pp = sentry;
else if (node->left == sentry) *pp = node->right;
else if (node->right == sentry) *pp = node->left;
else {
nodeType *p = node->left;
while (p->right != sentry) p = p->right;
p->right = node->right;
*pp = node->left;
}
free(node);
return 1;
}
解説は夜になってしまうかも
■ このスレッドは過去ログ倉庫に格納されています