コード例 #1
0
        /**Modifica la información de alguna entrada*/
        public void ActualizaEntradas(CCubeta cubAux, CCubeta nueva )
        {
            CEntrada entAux;
            int nEnt, tamHash;

            tamHash = tHashExt.getListEntradas().Count;
            nEnt = (int)Math.Pow(2, (double)(tHashExt.getPrefAsociacion() - cubAux.getPrefAsoc()));

            for (int i = tamHash - 1; i >= 0 && nEnt != 0; i--)
            {
                entAux = tHashExt.getAtEntrada(i);
                if (entAux.getCubeta() == cubAux)
                {
                    entAux.setCubeta(nueva);
                    nEnt--;
                    getArchivo().EscribeEntrada(entAux);
                }
            }
        }
コード例 #2
0
ファイル: FormOrg.cs プロジェクト: miguellgt/file-structures
        private List<int> buscaEntradas(CTablaHashExt tH, CCubeta cub)
        {
            List<int> L;
            int numEnt;

            L = new List<int>();
            numEnt = (int)Math.Pow((int)2,((int)(tH.getPrefAsociacion()-cub.getPrefAsoc())));

            foreach (CEntrada e in tH.getListEntradas())
                if (numEnt > 0)
                {
                    if (e.getCubeta() == cub)
                    {
                        L.Add(e.getID());
                        numEnt--;
                    }
                }
                else
                    break;

           return(L);

        }
コード例 #3
0
ファイル: CArchivo.cs プロジェクト: miguellgt/file-structures
        /**Se escribe un objeto cubeta de la organizacion Hash Dinamica en el archivo de trabajo
         * \param cubeta Cubeta a escribir, ya cuenta con su direccion en el archivo*/
        public void EscribeCubeta(CCubeta cubeta)
        {
            bw.BaseStream.Seek(cubeta.getDir(), SeekOrigin.Begin);

            bw.Write(cubeta.getDir());
            bw.Write(cubeta.getTamaño());
            bw.Write(cubeta.getNumDirBloques());
            bw.Write(cubeta.getPrefAsoc());

            for (int i = 0; i < cubeta.getTamaño(); bw.Write(cubeta.getAtDirBloque(i)), i++) ;
        }
コード例 #4
0
ファイル: FormOrg.cs プロジェクト: miguellgt/file-structures
        private CCubeta creaCubeta(CCubeta c, CArchivo aN, CArchivo aO)
        {
            CCubeta nuevaCub;
            CBloque bloqAux;

            nuevaCub = new CCubeta(aN.ENDF(), c.getTamaño());

            nuevaCub.setNumDirBloques(c.getNumDirBloques());
            nuevaCub.setPrefAsoc(c.getPrefAsoc());

            for (int i = 0; i < c.getTamaño(); i++)
                if ((bloqAux = aO.leerBloque(c.getAtDirBloque(i), tamBloque)) != null)
                {
                    bloqAux.setTamBlo(tamBloque);
                    nuevaCub.setAtDirBloque(i, aN.ENDF());
                    aN.EscribeBloque(bloqAux, aN.ENDF());
                }

            nuevaCub.setDir(aN.ENDF());
            aN.EscribeCubeta(nuevaCub);

            return (nuevaCub);
        }