コード例 #1
0
        public override bool componentesSeparados()
        {
            bool separados;

            separados = false;
            Nodo          actual;
            Nodo          siguiente;
            Arista        arista;
            List <Arista> recorridas;

            this.setGrados();
            recorridas = new List <Arista>();
            actual     = this[0];
            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;
            } while (actual.grados() != 0);
            if (this.Aristas != recorridas.Count)
            {
                separados = true;
            }
            return(separados);
        }
コード例 #2
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);
        }