Ejemplo n.º 1
0
        //Metodo que actualiza de forma logica la lista de claves y directorio hash
        public void actualizaListaHash(int dirCajon, int numCajon)
        {
            archivHash.Close();
            archivHash = File.Open(archivHash.Name, FileMode.Open);
            BinaryReader br = new BinaryReader(archivHash);

            archivHash.Seek(dirCajon, SeekOrigin.Begin);

            r = 0;
            int  clvComp = br.ReadInt32();
            long dirReg  = br.ReadInt64();

            r = 0;
            while (clvComp != -1)
            {
                campoCajonHash camHas = new campoCajonHash();
                camHas.clave   = clvComp;
                camHas.apunReg = dirReg;

                r = 0;
                DirectorioHash[numCajon].listaCampoCajonHash.Add(camHas);

                clvComp = br.ReadInt32();
                dirReg  = br.ReadInt64();
                r       = 0;
            }
            r = 0;
            archivHash.Close();
        }
Ejemplo n.º 2
0
        //Este metodo realiza la insersion de una clave y su direccion en su correspondiente cajon de manera logica
        public void insertaEnCajon(int cajon, int clave, long dirReg)
        {
            r = 0;
            for (int i = 0; i < DirectorioHash.Length; i++)
            {
                if (i == cajon)
                {
                    r = 0;
                    campoCajonHash camHas = new campoCajonHash();
                    camHas.apunReg = dirReg;
                    camHas.clave   = clave;
                    DirectorioHash[i].listaCampoCajonHash.Add(camHas);


                    List <campoCajonHash> lisOrd = DirectorioHash[i].listaCampoCajonHash;

                    lisOrd = lisOrd.OrderBy(o => o.clave).ToList();

                    DirectorioHash[i].listaCampoCajonHash = lisOrd;


                    long valoCajon;
                    r = 0;
                    if (DirectorioHash[i].dirCajon == 0)
                    {
                        r = 0;
                        archivHash.Close();
                        archivHash = File.Open(archivHash.Name, FileMode.Open);
                        valoCajon  = archivHash.Length;
                        DirectorioHash[i].dirCajon = (int)archivHash.Length;
                        archivHash.Close();
                        r = 0;
                        actualizaDirectorioArchivo(i, valoCajon);
                    }
                    else
                    {
                        valoCajon = DirectorioHash[i].dirCajon;
                    }

                    r = 0;
                    actualizaListaHashCajonArchivo(i, valoCajon);
                }
            }



            r = 0;
        }