public override List <string> circuitoEuleriano() { List <string> recorrido; Nodo actual; Nodo siguiente; Arista arista; List <Arista> recorridas; recorrido = new List <string>();; this.setGrados(); recorridas = new List <Arista>(); actual = this[0]; // Console.Write(actual.Nombre); do { recorrido.Add(actual.Nombre); siguiente = MetodosAuxiliares.siguienteEnCircuito(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); recorrido.Add(actual.Nombre); return(recorrido); }
public override List <string> circuitoEuleriano() { Nodo actual; //Nodo actual en la secuencia Nodo siguiente; //Nodo siguiente en la secuencia Arista arista; //Arista recorrida List <string> recorrido; //Lista que contendra la secuencia del circuito List <Arista> recorridas; //Lista de aristas recorridas recorrido = new List <string>(); recorridas = new List <Arista>(); this.setGrados(); //inicializa el valor de los grados actual = this[0]; //Inicia el recorrido en el primer nodo que se inserto en el grafo do { recorrido.Add(actual.Nombre); siguiente = MetodosAuxiliares.siguienteEnCircuito(actual, recorridas); //busca el siguiente nodo en la secuencia arista = MetodosAuxiliares.encuentraArista(actual, siguiente); //Encuentra la arista que apunta al nodo recorridas.Add(arista); //Añade a la arista a la lista para no volver a ser recorrida actual.GradoSalida--; //Reduce en uno el grado de salida actual = siguiente; //El apuntador del nodo actual pasa a tener el valor del siguiente en la secuencia } while (actual.GradoSalida != 0); //El ciclo se mantiene hasta que el nodo recorrido.Add(actual.Nombre); //Añade el ultimo nombre al nodo de la secuencia return(recorrido); }