Subversion Repositories PlanixRsrch.SVN

Compare Revisions

Ignore whitespace Rev 331 → Rev 332

/trunk/libmavl/mavl_del.c
30,7 → 30,6
#include "mavl.h"
 
extern void the_print();
//void the_print(){};
 
static void
mavl_drot2(struct mavlnode *n, struct mavlnode **parent, int dir)
37,9 → 36,7
{
 
mavl_rot(n->s[dir],&n->s[dir],1-dir);
//the_print();
mavl_rot(n,parent,dir);
//the_print();
return;
}
 
69,6 → 66,7
}
 
if (n->s[dir]->bal == -sdir) {
//printf("DROT_START\n");
//the_print();
// n->bal = 0;
// n->bal = n->s[dir]->bal; //-sdir;
85,14 → 83,48
 
// n->s[dir]->bal = 999;
//
b = n->s[dir]->s[1-dir]->bal;
 
 
{
int l,r;
l = n->s[0] ? 1 : 0;
r = n->s[1] ? 1 : 0;
l = n->s[0] ? n->s[0]->bal : 0;
r = n->s[1] ? n->s[1]->bal : 0;
n->bal = r+l;
 
if (!n->s[dir]->s[dir]) n->bal = 0;
 
//printf("NBAL: %d (%d, %d)\n",n->bal,l,r);
 
}
 
 
b = n->s[dir]->s[1-dir]->bal;
//printf("B: %d sdir: %d\n",b,sdir);
if (b==0) {
n->bal = -sdir;
}
else if (b==-sdir) {
//printf("b = sdir = 0\n");
n->bal=0;
} else {
//printf("Kick\n");
// exit(0);
}
//printf("BALBAL: %d\n",n->bal);
 
b = n->s[dir]->s[1-dir]->bal;
 
if (b == 0){
n->s[dir]->bal = 0;
n->bal=0;
} else if (b == sdir) {
n->bal = -sdir;
n->s[dir]->bal = 0 ;
} else if (b == -sdir){
n->s[dir]->bal = sdir;
n->bal=0;
} else{
printf("Kack\n");
exit(0);
101,14 → 133,8
 
n->s[dir]->s[1-dir]->bal = 0; // ok z
 
 
mavl_drot2(n, parent,dir);
 
{
int l,r;
l = n->s[0] ? 1 : 0;
r = n->s[1] ? 1 : 0;
n->bal = r-l;
}
// n->bal=98;
return 1;
 
131,37 → 157,6
exit(0);
}
 
 
static int
adj_bala(struct mavlnode *n, struct mavlnode **parent, int dir, int sdir)
{
 
int b;
if (n->s[dir]->bal == sdir) {
n->bal = 0;
n->s[dir]->bal = 0;
mavl_rot(n, parent,dir);
return 0;
}
b = n->s[dir]->s[1-dir]->bal;
if (b==-sdir){
n->bal = 0;
n->s[dir]->bal = sdir;
}else if (b==sdir){
n->bal = -sdir;
n->s[dir]->bal = 0;
}else{
n->bal = 0;
n->s[dir]->bal = 0;
}
 
n->s[dir]->s[1-dir]->bal = 0;
mavl_drot(n, parent,dir);
return 0;
 
}
 
static int
mavl_del_lo(struct mavl * t, struct mavlnode **parent, void *data)
{