bool TablaHashAbierto<C,V,FHash>::Borrar(const C& c) { assert(Pertenece(c)); nat pos = H(c); if (arreglo[pos]->Borrar(c)) { largo--; return true; } return false; }
/** * Agrega un elemento al conjunto. * Implementa la función AGREGAR(in/out c: conjAcotado, in e : nat) * PRE: { c = c_0 ^ Infimo(c) <= e <= Supremo(c) } * POS: { c = Ag(e, c_0) } * Complejidad: O(1) */ void ConjAcotado::Agregar(Nat e) { assert(EnRango(e)); if (!Pertenece(e)) { pertenencia.Definir(Indice(e), elementos.AgregarRapido(e)); } }
/** * Elimina a de c, si es que estaba. * Observar que no es requerido que e pertenezca al rango de c. * Implementa la función ELIMINAR(in/out c: conjAcotado, in e: nat) * PRE: { c = c_0 } * POS: { ConjSuby(c) = ConjSuby(c_0) \ {e} ^ Rango(c) = Rango(c_0) } * Complejidad: O(1) */ void ConjAcotado::Eliminar(Nat e) { if (EnRango(e) && Pertenece(e)) { pertenencia[Indice(e)].EliminarSiguiente(); pertenencia.Borrar(Indice(e)); } }
const V& TablaHashAbierto<C,V,FHash>::Obtener(const C& c) const { assert(Pertenece(c)); nat pos = H(c); return arreglo[pos]->Obtener(c); }
void Conj<T>::Eliminar(const T& e){ if(Pertenece(e)) d.Borrar(e); }