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); }
public ColaED1 <NodoHuff <byte> > insert(FileStream archivo) { archivo.Position = 0; using var reader = new BinaryReader(archivo); var buffer = new byte[2000000]; while (archivo.Position < archivo.Length) { buffer = reader.ReadBytes(2000000); evaluarCadena(buffer); devolverBytes(buffer); } reader.Close(); archivo.Close(); for (int i = 0; i < colaPrioridad.Count; i++) { NodoHuff <byte> nodoHuffman = new NodoHuff <byte>(); nodoHuffman.Value = colaPrioridad[i].valor; nodoHuffman.Frecuencia = Decimal.Divide(colaPrioridad[i].prioridad, contador); nodoHuffman.ProbPrio = colaPrioridad[i].prioridad; priorityQueue.Insert(nodoHuffman.Frecuencia, nodoHuffman); } priorityQueue.ordenar(); return(priorityQueue); }
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(); } }