Exemple #1
0
        public static void Main(string[] args)
        {
            Dictionary <char, int> TablaFrecuencia = new Dictionary <char, int>();
            List <Nodo>            ListaAOrdenar   = new List <Nodo>();
            Dictionary <char, int> TablaOrdenada   = new Dictionary <char, int>();
            Stack <Nodo>           PilaOrdenada    = new Stack <Nodo>();
            ArbolHuffman           arbol           = new ArbolHuffman();

            string[] Text = { "ABRACADABRA" };
            var      i    = 0;

            char[] Linea      = Text[i].ToCharArray();
            var    pos        = 0;
            var    TOTAL      = 0;
            double Caracteres = 0;

            //Llenar Diccionario
            while (pos < Linea.Length)
            {
                if (TablaFrecuencia.ContainsKey(Linea[pos]) == true)
                {
                    var Frecuencia = TablaFrecuencia[Linea[pos]] + 1;
                    TablaFrecuencia.Remove(Linea[pos]);
                    TablaFrecuencia.Add(Linea[pos], Frecuencia);
                }
                else
                {
                    TablaFrecuencia.Add(Linea[pos], 1);
                }
                pos++;
                Caracteres++;
            }

            //Insertando a Lista
            foreach (var item in TablaFrecuencia)
            {
                Nodo Temp = new Nodo();
                Temp.data.Caracter      = item.Key;
                Temp.data.Frecuencia    = item.Value;
                Temp.data.Probabilidad  = (Convert.ToDouble(item.Value) / Caracteres);
                Temp.data.CodigoPrefijo = "";
                ListaAOrdenar.Add(Temp);
            }

            //Ordenando Lista Probabilidad para recorrido
            IEnumerable <Nodo> OrdenarLista = ListaAOrdenar.OrderBy(Probabilidad => Probabilidad.data.Probabilidad);

            foreach (var item in OrdenarLista)
            {
                TablaOrdenada.Add(item.data.Caracter, item.data.Frecuencia);
            }

            //Ordenando Pila Crear ArbolHuffman
            PilaOrdenada = arbol.Ordenar(ListaAOrdenar);
            arbol.CrearArbol(PilaOrdenada);

            //Obtener caracter y CodigoPrefijo Compresion

            Nodo Temp1 = new Nodo();

            Temp1 = arbol.Retornar();

            arbol.InOrden(Temp1);



            //Retonar el total de caracteres en el texto
            Console.WriteLine("El tamaño del texto es:" + Caracteres.ToString());
            Console.ReadLine();
        }