Пример #1
0
        public ColaED1 <NodoHuff <byte> > leerArchivo(string fileArchivo)
        {
            fileArchivo = fileArchivo.Substring(0, fileArchivo.Length - 2);
            System.Text.ASCIIEncoding codificador = new System.Text.ASCIIEncoding();
            byte[] bytesLinea = codificador.GetBytes(fileArchivo);

            int noValores = bytesLinea[0];
            int noBytes   = bytesLinea[1];

            for (int i = 2; i <= (noValores * noBytes) + 1; i++)
            {
                contador = contador + bytesLinea[i + 1];
                i++;
            }

            for (int i = 2; i <= (noValores * noBytes) + 1; i++)
            {
                NodoHuff <byte> nodoH = new NodoHuff <byte>();
                nodoH.Value      = bytesLinea[i];
                nodoH.ProbPrio   = bytesLinea[i + 1];
                nodoH.Frecuencia = Decimal.Divide(nodoH.ProbPrio, contador);
                colaPrioridad.Insert(nodoH.Frecuencia, nodoH);
                i++;
            }

            for (int i = (noValores * noBytes) + 2; i < bytesLinea.Length; i++)
            {
                cadenaBytes.Add(bytesLinea[i]);
                cadenaB += Convert.ToChar(bytesLinea[i]);
            }

            colaPrioridad.ordenar();
            return(colaPrioridad);
        }
Пример #2
0
 private void SubArbolPrefijos(NodoHuff <byte> nodoActual, string codigo)
 {
     if (nodoActual.Inzquierdo == null && nodoActual.Derecho == null)
     {
         codigosBytePrefijo.Add(nodoActual.Value, codigo);
         cogdigosPrefijoByte.Add(codigo, nodoActual.Value);
     }
     else
     {
         SubArbolPrefijos(nodoActual.Inzquierdo, $"{codigo}0");
         SubArbolPrefijos(nodoActual.Derecho, $"{codigo}1");
     }
 }
Пример #3
0
        private void CrearArbol(ColaED1 <NodoHuff <byte> > cola)
        {
            NodoHuff <byte> auxIzqu  = new NodoHuff <byte>();
            NodoHuff <byte> auxDer   = new NodoHuff <byte>();
            NodoHuff <byte> auxPadre = new NodoHuff <byte>();

            try
            {
                auxDer  = cola.Delete();
                auxIzqu = cola.Delete();

                //Esta validación o validar si el elemento de la cola auxDer es auxDer.FrePrio = 1
                if (auxIzqu == null)
                {
                    Raiz            = auxDer;
                    Raiz.Frecuencia = 1;
                    GenerarPrefijos();
                }
                else
                {
                    auxPadre.Frecuencia = auxDer.Frecuencia + auxIzqu.Frecuencia;
                    auxPadre.Derecho    = auxDer;
                    auxPadre.Inzquierdo = auxIzqu;

                    cola.Insert(auxPadre.Frecuencia, auxPadre);

                    CrearArbol(cola);
                }
            }
            catch (System.NullReferenceException ex)
            {
                Raiz            = auxDer;
                Raiz.Frecuencia = 1;
                GenerarPrefijos();
            }
        }