bool ListaClientes::ponElem(const Cliente &cliente){ if (!esta(cliente)) { _clientes[_numClientes]=cliente; _numClientes++; return true; } return false; }
void retira_b (pagina **raiz, int x, int *s) { int posicion, i, k; pagina *p, *q, *r, *t; LIFO1 pila; void init1_pila (struct LIFO1 *p); int pila1_vacia (struct LIFO1 *p); void ins1_pila (struct LIFO1 *p,pagina *s,int i); void retira1_pila (struct LIFO1 *p,pagina **s,int *i); *s = 1; init1_pila (&pila); esta (*raiz, x, &posicion, &pila); if (posicion == -1) *s = 0; /* La llave no existe en el arbol */ else { retira1_pila (&pila, &p, &i); if (!hoja (p)) { t = p; k = i; ins1_pila (&pila, p, i+1); p = p->apunt [i+1]; while ( p != NULL) { ins1_pila (&pila, p, 0); p = p->apunt [0]; } retira1_pila (&pila, &p, &i); t->info [k] = p->info [0]; x = p->info [0]; posicion = 0; } if (p->cont > N) retirar (p, posicion); else { if (!pila1_vacia (&pila)) { retira1_pila (&pila, &q, &i); if (i < q->cont) { r = q->apunt [i+1]; if (r->cont > N) { retirar (p, posicion); cambio (p, q, r, i, x); } else { if (i != 0) { r = q->apunt [i-1]; if (r->cont > N) { retirar (p, posicion); cambio(p,q,r,i-1,x); } else unir (raiz,q,r,p, i-1,pila,x,posicion); } else unir (raiz,q,r,p,i,pila, x,posicion); } } else { r = q->apunt [i-1]; if (r->cont > N) { retirar (p, posicion); cambio (p,q,r,i-1,x); } else unir (raiz,q,r,p,i-1,pila, x, posicion); } } else { retirar (p, posicion); if (p->cont == 0) { free (*raiz); *raiz = NULL; } } } } }