コード例 #1
0
        public override List <string> caminoEuleriano()
        {
            List <string> recorrido;
            List <string> recorridoAux;
            List <Arista> recorridas;
            Nodo          actual;
            Nodo          siguiente;
            Arista        arista;

            recorrido    = new List <string>();
            recorridoAux = new List <string>();
            this.setGrados();
            recorridas = new List <Arista>();
            actual     = MetodosAuxiliares.inicioDeCaminoNoDir(this);
            do
            {
                recorridoAux.Add(actual.Nombre);
                do
                {
                    siguiente = MetodosAuxiliares.siguienteEnCaminoNoDir(actual, recorridas);
                    arista    = MetodosAuxiliares.encuentraArista(siguiente, actual);
                    recorridas.Add(arista);
                    siguiente.GradoSalida--;
                    arista = MetodosAuxiliares.encuentraArista(actual, siguiente);
                    recorridas.Add(arista);
                    actual.GradoSalida--;
                    actual = siguiente;
                    recorridoAux.Add(actual.Nombre);
                } while (actual.GradoSalida != 0);
                recorrido    = MetodosAuxiliares.sumaListas(recorridoAux, recorrido);
                recorridoAux = new List <string>();
                if (recorridas.Count != this.Aristas)
                {
                    actual    = base.BuscaNodo(recorrido.First().ToString());
                    recorrido = MetodosAuxiliares.subList(recorrido, 1);
                }
            } while (recorridas.Count != this.Aristas);
            return(recorrido);
        }