private void Inserta(CRegistro registro) { //manejar aumento de no_reg registros.Add(registro); registros.Sort(delegate(CRegistro x, CRegistro y) { if (x == null && y == null) { return(0); } else if (x == null) { return(-1); } else if (y == null) { return(1); } else { return(x.Clave.CompareTo(y.Clave)); } }); noRegistro++; }
public FormHash() { InitializeComponent(); archivo = new Archivo("Untitle", Application.StartupPath + "\\ProyectosGrafo\\Hash\\"); registro = new CRegistro(26); tabla = new TablaHash(26, 4, 10, 10); }
public void InsertaRegistro(CRegistro registro) { Cubeta C = new Cubeta(noRegistros); Archivo archivo = new Archivo(nombre, path); int posicion = tabla.Hash(registro.Clave); long dirC = tabla.Cajones[posicion]; if (dirC == -1) { dirC = tabla.PtrsCubetaVacia; if (dirC != -1) { archivo.LeerCubeta(dirC, C); tabla.PtrsCubetaVacia = C.DirSigCubeta; C.DirSigCubeta = -1; } C.Insertar(registro); C.Direccion = tabla.Cajones[posicion] = archivo.EscribirCubeta(C); archivo.EscribirTablaH(tabla); } else { long ant; dirC = tabla.Cajones[posicion]; do { C = new Cubeta(noRegistros); archivo.LeerCubeta(dirC, C); ant = dirC; dirC = C.DirSigCubeta; } while (C.NoRegistros >= noRegistros && dirC != -1); if (C.NoRegistros < noRegistros) { C.Insertar(registro); C.Direccion = ant; archivo.EscribirCubeta(C); } else { Cubeta cc = new Cubeta(noRegistros); if (tabla.PtrsCubetaVacia != -1) { archivo.LeerCubeta(tabla.PtrsCubetaVacia, cc); tabla.PtrsCubetaVacia = cc.DirSigCubeta; cc.DirSigCubeta = -1; } cc.Insertar(registro); C.Direccion = ant; C.DirSigCubeta = cc.Direccion = archivo.EscribirCubeta(cc); archivo.EscribirCubeta(C); } // archivo.LeerCubeta(dirC, C); // C.InsertaRegistro(registro); } }
private void buttonCerrar_Click(object sender, EventArgs e) { HabilitarAbrirCrear(true); tabla = new TablaHash(26, 4, 10, 10); archivo = new Archivo("Untitle", Application.StartupPath + "\\ProyectosGrafo\\Hash\\"); registro = new CRegistro(26); nombreArch = ""; HabilitarEliminaAgrega(false); buttonCerrar.Enabled = false; LimpiarCubeta(); LimpiarTablaHash(); textBoxCV.Text = "0"; textBoxN1.Text = ""; textBoxN2.Text = ""; }
public Cubeta Insertar(CRegistro registro) { //cubeta que llama esta vacia /* if (registros.Count == MAX_REG) * { * Cubeta c = new Cubeta(MAX_REG); * c.registros.Add(registro); * c.NoRegistros++; * return c; * } * else * {*/ registros.Add(registro); noRegistro++; // } return(null); }
public void InsertaRegistro(CRegistro registro) { Cubeta C = new Cubeta(noRegistros); Archivo a = new Archivo("", ""); int posicion = Hash(registro.Clave); long dirC = cajones[posicion]; if (dirC == -1) { dirC = ptrsCubetaVacia; if (dirC != -1) { a.LeerCubeta(cajones[posicion], C); ptrsCubetaVacia = C.DirSigCubeta; C.DirSigCubeta = -1; } C.InsertaRegistro(registro); //a = a eso cajones[posicion] = C.Direccion; // o cajones[posicion] = C.InsertaRegistro(registro); // cajones[posicion] = a.EscribirCubeta(C); a.EscribirTablaH(this); } else { long ant; dirC = cajones[posicion]; do { a.LeerCubeta(dirC, C); ant = dirC; } while ((dirC = C.DirSigCubeta) != -1 && C.Registros[C.Registros.Count - 1].Clave < registro.Clave); if (C.Registros[C.Registros.Count - 1].Clave > registro.Clave) { if (C.Registros[0].Clave > registro.Clave) { dirC = ant; } } a.LeerCubeta(dirC, C); C.InsertaRegistro(registro); } }
public long InsertaRegistro(CRegistro registro /*, string path*/) { Archivo a = new Archivo("", ""); //maneja desbordamiento y insercion ordenanda long dir, ant, d = direccion; if (registros.Count < MAX_REG) { Inserta(registro); d = a.EscribirCubeta(this); //direccion = d = a.EscribirCubeta(this); checar retorno de cubeta con valor actualizdo } else { Cubeta cc = new Cubeta(MAX_REG); CRegistro regAux; if (registros[registros.Count - 1].Clave > registro.Clave) { regAux = new CRegistro(registros[registros.Count - 1]); registros.RemoveAt(registros.Count - 1); Inserta(registro); d = a.EscribirCubeta(this); } else { regAux = registro; } dir = dirSigCubeta; if (dir != -1) { a.LeerCubeta(dir, cc); cc.InsertaRegistro(regAux); } else { //crear cubeta y encadena dirSigCubeta = cc.InsertaRegistro(regAux); } } return(d); }
public CRegistro(CRegistro r) { }