Пример #1
0
        /**Lee un nodo especifico que forma parte del arbol B+*/
        public CNodo leerNodo(long pos)
        {
            CNodo nuevo = new CNodo();
            
            br.BaseStream.Seek(pos, SeekOrigin.Begin);
            
            nuevo.setDir(br.ReadInt64());
            nuevo.setTipoNodo(br.ReadInt32());
            nuevo.setNumElemnt(br.ReadInt32());
            nuevo.setGrado(br.ReadInt32());
            nuevo.setTipoClave(br.ReadInt32());

            nuevo.creaArrayDirNodos(nuevo.getGrado());
            nuevo.creaArrayDirClaves(nuevo.getGrado());
            nuevo.creaArrayClaves(nuevo.getGrado());

            //Leer las direcciones de sus nodos descendientes
            for (int i = 0; i < (nuevo.getGrado() * 2) + 1; i++)
                nuevo.setAtDirNodo(i, br.ReadInt64());

            //Leer las direciones de las claves del nodo( Hoja, pagina o Raiz )
            for (int i = 0; i < nuevo.getGrado() * 2; i++)
                nuevo.setAtDirClaves(i, br.ReadInt64());

            //Se leen las claves primarias y se almacenan en el vector de objectos
           
            leerClaves(nuevo);
           
            return (nuevo);
        }
Пример #2
0
        /**Escribe un objeto CNodo utilizado en Arbol B+*/
        public void escribeNodo(CNodo nuevo)
        {

            bw.BaseStream.Seek(nuevo.getDir(), SeekOrigin.Begin);

            bw.Write(nuevo.getDir());
            bw.Write(nuevo.getTipoNodo());
            bw.Write(nuevo.getNumElemnt());
            bw.Write(nuevo.getGrado());
            bw.Write(nuevo.getTipoClave());

            //Escribir la dir de las paginas u hojas
            for (int i = 0; i < (nuevo.getGrado() * 2) + 1; i++)
                bw.Write(nuevo.getAtDirNodo(i));

            //Escribir la dir de las llaves de las paginas del arbol
            for (int i = 0; i < nuevo.getGrado() * 2; i++)
                bw.Write(nuevo.getAtDirClaves(i));
        }
Пример #3
0
        private CNodo creaNodo(CArchivo aO, CArchivo aN, CNodo nodoAux)
        {
            CNodo nuevo;

            nuevo = new CNodo(nodoAux.getTipoNodo(), nodoAux.getGrado());

            nuevo.setNumElemnt(nodoAux.getNumElemnt());
            nuevo.setTipoClave(nodoAux.getTipoClave());

            for(int i = 0; i< nodoAux.getNumElemnt(); i++)
            {
                nuevo.setAtDirClaves(i, aN.ENDF());
                nuevo.escribeClave(nodoAux.getAtClave(i), aN.ENDF(), nodoAux.getTipoClave(), aN);
            }

            nuevo.setDir(aN.ENDF());
            aN.escribeNodo(nuevo);

            return (nuevo);

        }