Subversion Repositories PlanixRsrch.SVN

Compare Revisions

Ignore whitespace Rev 12 → Rev 13

/trunk/libmavl/mavl.c
94,6 → 94,14
struct mavlnode *n;
int rc, bal;
 
if (*parent==NULL){
*parent = mavlnode_create(t, *data);
*data = mavlnode_dataptr(*parent);
if (*parent==NULL)
return MAVL_E_NOMEM;
return 0;
}
 
n = *parent;
rc = t->cmp(*data, mavlnode_dataptr(n));
 
103,21 → 111,7
}
 
if (rc < 0) {
if (!n->left) {
n->left = mavlnode_create(t, *data);
*data = mavlnode_dataptr(n->left);
if (!n->left)
return MAVL_E_NOMEM;
 
t->count++;
if (n->right == 0) {
n->bal = -1;
return 1;
}
n->bal = 0;
return 0;
}
 
/* n->left is not NULL */
bal = mavl_insert0(t, &n->left, data);
 
144,7 → 138,6
n->left->bal = -1;
break;
case -1:
break;
n->bal = 1;
n->left->bal = 0;
break;
161,19 → 154,6
}
 
/* rc is > 0 here */
if (!n->right) {
 
n->right = mavlnode_create(t, *data);
*data = mavlnode_dataptr(n->right);
 
if (!n->right)
return MAVL_E_NOMEM;
 
t->count++;
n->bal = n->left ? 0 : 1;
return n->bal;
}
 
bal = mavl_insert0(t, &n->right, data);
 
if (bal > 1)
205,7 → 185,6
default:
n->bal = 0;
n->right->bal = 0;
 
}
n->right->left->bal = 0;
rot_rl(n, parent);
221,17 → 200,6
const void *d;
int rc;
 
if (t->root == NULL) {
t->root = mavlnode_create(t, data);
 
if (t->root)
t->count++;
 
if (exists != NULL)
*exists = 0;
return mavlnode_dataptr(t->root);
}
 
d = data;
rc = mavl_insert0(t, &t->root, &d);