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 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); }
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); }
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); }