public void siguientes(List <int> numeros, Estado nuevoEstado)
        {
            List <int> estadosCerradura = new List <int>();

            for (int i = 0; i < numeros.Count; i++)
            {
                NodoExpresion paraCerradura = buscarNodo(numeros.ElementAt(i));
                if (paraCerradura != null)
                {
                    cerradura(paraCerradura, estadosCerradura);
                }
            }
            mostrarCerradura(estadosCerradura);
            bool has = estadosCerradura.Any(x => x == ultimo.Id);

            if (has == true)
            {
                nuevoEstado.Aceptacion = true;
            }
            List <Transicion> trancisionesEstado = new List <Transicion>();

            for (int i = 0; i < listaSimbolos.Count; i++)
            {
                List <int> estadosMueve = new List <int>();
                for (int l = 0; l < estadosCerradura.Count; l++)
                {
                    NodoExpresion paraMove = buscarNodo(estadosCerradura.ElementAt(l));
                    if (paraMove != null)
                    {
                        move(paraMove, listaSimbolos.ElementAt(i), estadosMueve);
                    }
                }
                if (estadosMueve.Count > 0)
                {
                    bool sn = existeCerradura(estadosMueve);
                    if (sn)
                    {
                        int        id = devolverId(estadosMueve);
                        Transicion nuevaTransicion = new Transicion();
                        nuevaTransicion.Estado  = id;
                        nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString();
                        trancisionesEstado.Add(nuevaTransicion);
                    }
                    else
                    {
                        Estado apuntar = new Estado();
                        apuntar.EstadoInicial = j;
                        j++;
                        apuntar.Numeros = estadosMueve;
                        transiciones.Add(apuntar);
                        Transicion nuevaTransicion = new Transicion();
                        nuevaTransicion.Estado  = apuntar.EstadoInicial;
                        nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString();
                        trancisionesEstado.Add(nuevaTransicion);
                        siguientes(estadosMueve, apuntar);
                    }
                }
            }
            nuevoEstado.Transiciones = trancisionesEstado;
        }
        public void generarTabla(List <NodoExpresion> listaNodos, List <int> numeros, List <Object> simbolos, String nombre, NodoExpresion final, ListaCircularGaleria lg, Galeria nuevoGaleria)
        {
            listaNodo     = listaNodos;
            name          = nombre;
            listaSimbolos = simbolos;
            ultimo        = final;
            List <int> estadosCerradura = new List <int>();

            for (int i = 0; i < numeros.Count; i++)
            {
                NodoExpresion paraCerradura = buscarNodo(numeros.ElementAt(i));
                if (paraCerradura != null)
                {
                    cerradura(paraCerradura, estadosCerradura);
                }
            }
            mostrarCerradura(estadosCerradura);
            Estado nuevoEstado = new Estado();

            nuevoEstado.EstadoInicial = j;
            j++;
            nuevoEstado.Numeros = numeros;
            bool has = estadosCerradura.Any(x => x == ultimo.Id);

            if (has == true)
            {
                nuevoEstado.Aceptacion = true;
            }
            transiciones.Add(nuevoEstado);
            List <Transicion> trancisionesEstado = new List <Transicion>();

            for (int i = 0; i < listaSimbolos.Count; i++)
            {
                List <int> estadosMueve = new List <int>();
                for (int l = 0; l < estadosCerradura.Count; l++)
                {
                    NodoExpresion paraMove = buscarNodo(estadosCerradura.ElementAt(l));
                    if (paraMove != null)
                    {
                        move(paraMove, listaSimbolos.ElementAt(i), estadosMueve);
                    }
                }
                if (estadosMueve.Count > 0)
                {
                    bool sn = existeCerradura(estadosMueve);
                    if (sn)
                    {
                        int        id = devolverId(estadosMueve);
                        Transicion nuevaTransicion = new Transicion();
                        nuevaTransicion.Estado  = id;
                        nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString();
                        trancisionesEstado.Add(nuevaTransicion);
                    }
                    else
                    {
                        Estado apuntar = new Estado();
                        apuntar.EstadoInicial = j;
                        j++;
                        apuntar.Numeros = estadosMueve;
                        transiciones.Add(apuntar);

                        Transicion nuevaTransicion = new Transicion();
                        nuevaTransicion.Estado  = apuntar.EstadoInicial;
                        nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString();
                        trancisionesEstado.Add(nuevaTransicion);
                        siguientes(estadosMueve, apuntar);
                    }
                }
            }
            nuevoEstado.Transiciones = trancisionesEstado;
            nuevoGaleria.Estados     = transiciones;
            lg.insertar(nuevoGaleria);
        }