public NodoCaracter(string dato)
        {
            _dato = dato;

            hIzq = null;
            hDer = null;
        }
Beispiel #2
0
        //Eliminar (POP-PILA). eliminar el último en entrar.
        public NodoCaracter eliminarPopPila()
        {
            NodoCaracter temp = ultimo;

            if (ultimo == null)
            {
                return(null);
            }
            else
            {
                ultimo = ultimo.anterior;
                return(temp);

                //while (temp.siguiente != null)
                //{
                //    temp = temp.siguiente;
                //}
                //temp = temp.anterior;


                //ultimo = temp.siguiente;
                //temp = ultimo;
                //temp.siguiente = null;
                //ultimo = temp;
                //return temp;
            }
        }
        //Resolver ecuación por método Pre Orden.
        public int resolverEcuacionPreOrden()
        {
            Lista pila = new Lista();

            string cadena = preOrden();

            pila.crearListaEcuacion(cadena);

            Lista        pilaDeNumeros = new Lista();
            NodoCaracter temp          = pila.regresarUltimo();

            while (temp != null)
            {
                int num1 = 0, num2 = 0, resultado = 0;

                if (temp.dato == "*")
                {
                    num1      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    num2      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    resultado = num1 * num2;
                    NodoCaracter resu = new NodoCaracter(resultado.ToString());
                    pilaDeNumeros.agregarPush(resu);
                }
                else if (temp.dato == "/")
                {
                    num1      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    num2      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    resultado = num1 / num2;
                    NodoCaracter resu = new NodoCaracter(resultado.ToString());
                    pilaDeNumeros.agregarPush(resu);
                }
                else if (temp.dato == "+")
                {
                    num1      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    num2      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    resultado = num1 + num2;
                    NodoCaracter resu = new NodoCaracter(resultado.ToString());
                    pilaDeNumeros.agregarPush(resu);
                }
                else if (temp.dato == "-")
                {
                    num1      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    num2      = Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato);
                    resultado = num1 - num2;
                    NodoCaracter resu = new NodoCaracter(resultado.ToString());
                    pilaDeNumeros.agregarPush(resu);
                }
                else
                {
                    pilaDeNumeros.agregarPush(temp);
                }
                temp = temp.anterior;
            }
            return(Convert.ToInt32(pilaDeNumeros.eliminarPopPila().dato));
        }
        //Resolver ecuación por método Post Orden.



        //Mostrar Arbol de forma fea. (PRIVADO)_____________________________________________________________________________________
        private string mostrarArbolPrivate(NodoCaracter nRaiz)
        {
            string cadena = "";

            if (nRaiz != null)
            {
                cadena += nRaiz.ver();                      //Raiz
                cadena += mostrarArbolPrivate(nRaiz.hIzq);  //Izquierda
                cadena += mostrarArbolPrivate(nRaiz.hDer);  //Derecha
            }
            return(cadena);
        }
        //Post Orden (PRIVADO).___________________________________________________________________________________________________
        private string postOrdenPrivate(NodoCaracter nRaiz)
        {
            string cadena = "";

            if (nRaiz != null)
            {
                cadena += postOrdenPrivate(nRaiz.hIzq); //Izquierda
                cadena += postOrdenPrivate(nRaiz.hDer); //Derecha
                cadena += nRaiz.ToString();             //Raiz
            }
            return(cadena);
        }
Beispiel #6
0
 //Eliminar inicio._________________________________________________________________________________________________
 public void eliminarInicio()
 {
     if (inicio == null || inicio.siguiente == null)
     {
         inicio = null;
         ultimo = null;
     }
     else
     {
         inicio          = inicio.siguiente;
         inicio.anterior = null;
     }
 }
Beispiel #7
0
        //__________________________________________________________________________________________________________________________
        /// <summary>
        /// Muestra todos los productos en el vector.
        /// </summary>
        /// <returns></returns>
        public string mostrarLista()
        {
            string       cadena = "";
            NodoCaracter temp   = inicio;

            while (temp != null)
            {
                cadena += temp.ToString();
                temp    = temp.siguiente;
            }

            return(cadena);
        }
Beispiel #8
0
        //Eliminar (POP-COLA). eliminar el primero en entrar.
        public NodoCaracter eliminarPopCola()
        {
            NodoCaracter temp = inicio;

            if (inicio == null)
            {
                return(null);
            }
            else
            {
                inicio = inicio.siguiente;
                return(temp);
            }
        }
Beispiel #9
0
 //Agregar (PUSH).
 public void agregarPush(NodoCaracter nuevoCar)
 {
     if (inicio == null)
     {
         inicio = nuevoCar;
         ultimo = nuevoCar;
     }
     else
     {
         NodoCaracter temp = inicio;
         while (temp.siguiente != null)
         {
             temp = temp.siguiente;
         }
         temp.siguiente = nuevoCar;
         //nuevoCar.anterior = temp;
         ultimo = nuevoCar;
     }
 }
Beispiel #10
0
        //Crear Lista de la ecuación._______________________________________________________________________________________________
        public void crearListaEcuacion(string ecuacion)
        {
            for (int i = 0; i < ecuacion.Length; i++)
            {
                NodoCaracter caracterNew = new NodoCaracter(ecuacion[i].ToString());

                if (inicio == null)//En caso de no tener ningun Nodo, agrega al primer Nodo en inicio.
                {
                    inicio = caracterNew;
                    ultimo = caracterNew;
                }
                else//busca el último Nodo con un siguiente en null para poder agregar.
                {
                    NodoCaracter temp = inicio;
                    while (temp.siguiente != null)
                    {
                        temp = temp.siguiente;
                    }
                    temp.siguiente       = caracterNew;
                    caracterNew.anterior = temp;
                    ultimo = caracterNew;
                }
            }
        }
Beispiel #11
0
 public Lista()
 {
     inicio = null;
     ultimo = null;
 }
        //Llenar Árbol._____________________________________________________________________________________________________________
        public void llenarArbol(string ecuacion)
        {
            Lista listaEcuacion = new Lista();

            listaEcuacion.crearListaEcuacion(ecuacion);
            raiz = listaEcuacion.regresarInicio();
            NodoCaracter temp = raiz;

            //Multiplicación y División.--------------------------------------------------------------------------------------------
            while (temp != null)
            {
                if (temp.dato == "*" || temp.dato == "/")
                {
                    if (temp.hIzq == null && temp.hDer == null)
                    {
                        temp.hIzq = temp.anterior;
                        temp.hDer = temp.siguiente;
                        //Unión del siguiente.
                        NodoCaracter temp2 = temp.siguiente.siguiente;
                        if (temp2 != null)
                        {
                            temp2.anterior = temp;
                            temp.siguiente = temp2;
                        }
                        else
                        {
                            temp.siguiente = null;
                        }
                        //Unión del anterior.
                        temp2 = temp.anterior.anterior;
                        if (temp2 != null)
                        {
                            temp.anterior   = temp2;
                            temp2.siguiente = temp;
                        }
                        else
                        {
                            listaEcuacion.eliminarInicio();
                        }
                    }
                }
                temp = temp.siguiente;
            }
            //Suma y Resta.---------------------------------------------------------------------------------------------------------
            temp = listaEcuacion.regresarInicio();
            while (temp != null)
            {
                if (temp.dato == "+" || temp.dato == "-")
                {
                    if (temp.hIzq == null && temp.hDer == null)
                    {
                        temp.hIzq = temp.anterior;
                        temp.hDer = temp.siguiente;
                        //Unión del siguiente.
                        NodoCaracter temp2 = temp.siguiente.siguiente;
                        if (temp2 != null)
                        {
                            temp2.anterior = temp;
                            temp.siguiente = temp2;
                        }
                        else
                        {
                            temp.siguiente = null;
                        }
                        //Unión del anterior.
                        temp2 = temp.anterior.anterior;
                        if (temp2 != null)
                        {
                            temp.anterior   = temp2;
                            temp2.siguiente = temp;
                        }
                        else
                        {
                            listaEcuacion.eliminarInicio();
                        }
                    }
                }
                temp = temp.siguiente;
            }
            raiz = listaEcuacion.regresarInicio();
        }
 public Arbol()
 {
     raiz = null;
 }