public void EliminarColision(K key) { int pos = BuscarPos(key); if (pos == 0) { EliminarColisionInicio(); } else { if (pos == (cantidadcolisiones - 1)) { EliminarColisionFinal(); } else { if (pos > 0 && pos < (cantidadcolisiones - 1)) { ObjetoHash <K, V> auxiliar1 = ObtenerPos(pos - 1); ObjetoHash <K, V> auxiliar2 = ObtenerPos(pos); ObjetoHash <K, V> auxiliar3 = ObtenerPos(pos + 1); auxiliar1.siguiente = auxiliar3; auxiliar2.siguiente = null; cantidadcolisiones--; } } } }
//Metodos para eliminar--------------------------------------------------------------------------------------------> public void EliminarColisionInicio() { ObjetoHash <K, V> auxiliar = PrimerColision.siguiente; PrimerColision = auxiliar; cantidadcolisiones--; }
public int BuscarPos(K key) //Búsqueda por key se hara así, pues las colisiones se hará una búsqueda secuencial { ObjetoHash <K, V> Valor = new ObjetoHash <K, V>(); int cont = 0; int posi = -1; if (cantidadcolisiones > 0) { for (int i = 0; i < cantidadcolisiones; i++) { if (key.CompareTo(ObtenerPos(cont).Key) == 0) { Valor = ObtenerPos(cont); posi = cont; return(posi); } cont++; } return(posi); } else { return(posi); } }
public void EliminarColisionFinal() { if (cantidadcolisiones > 0) { ObjetoHash <K, V> auxiliar; auxiliar = ObtenerPos(cantidadcolisiones - 2); UltimaColision = auxiliar; UltimaColision.siguiente = null; cantidadcolisiones--; } }
public void Agregar(K key, V value) // agrega al final de la lista { ObjetoHash <K, V> Nom2 = new ObjetoHash <K, V>(key, value); if (cantidadcolisiones == 0) { agregarcolisioninicio(Nom2); } else { UltimaColision.siguiente = Nom2; UltimaColision = Nom2; cantidadcolisiones++; } }
//Métodos para agregar a la lista-----------------------------------------------> public void agregarcolisioninicio(ObjetoHash <K, V> Nom1)//agrega al inicio de la lista { if (cantidadcolisiones == 0) { PrimerColision = Nom1; UltimaColision = Nom1; cantidadcolisiones++; } else { ObjetoHash <K, V> temp = Nom1; temp.siguiente = PrimerColision; PrimerColision = temp; cantidadcolisiones++; } }
public ObjetoHash <K, V> ObtenerPos(int Pos) { if (cantidadcolisiones == 0 || Pos == 0) { return(ObtenerInicio()); } else if (Pos >= cantidadcolisiones) { return(ObtenerFinal()); } else { ObjetoHash <K, V> temp = PrimerColision; int cont = 0; while (cont < Pos) { temp = temp.siguiente; cont++; } return(temp); } }
public int CompareTo(object?obj) { ObjetoHash <K, V> value = (ObjetoHash <K, V>)obj; return(Key.CompareTo(value.Key)); }
public ObjetoHash() { siguiente = null; }
public ObjetoHash(K KEY, V VALUE) { this.Key = KEY; this.Value = VALUE; siguiente = null; }