public void ceromasGrafo() { NodoThompson nodo1 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(contadorNodos); contadorNodos++; for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { for (int j = listaNodos.Count - 1; j >= 0; j--) { if (listaNodos[j].getCabeza()) { listaNodos[i].setAristaB("ε"); listaNodos[i].setIrB(listaNodos[j]); break; } } break; } } nodo1.setAristaA("ε"); nodo1.setAristaB("ε"); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); nodo1.setIrA(listaNodos[i]); break; } } nodo1.setIrB(nodo2); nodo1.setCabeza(true); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setCola(false); listaNodos[i].setCuerpo(true); listaNodos[i].setAristaA("ε"); listaNodos[i].setIrA(nodo2); break; } } nodo2.setCola(true); listaNodos.Add(nodo1); listaNodos.Add(nodo2); }
// probar de aqui pa abajo public void cerounoGrafo() { NodoThompson nodo1 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo3 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo4 = new NodoThompson(contadorNodos); contadorNodos++; nodo1.setAristaA("ε"); nodo1.setAristaB("ε"); nodo1.setIrB(nodo2); // buscar setIrA for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); nodo1.setIrA(listaNodos[i]); break; } } nodo1.setCabeza(true); nodo2.setAristaA("ε"); nodo2.setIrA(nodo3); nodo2.setCuerpo(true); nodo3.setAristaA("ε"); nodo3.setIrA(nodo4); nodo3.setCuerpo(true); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setCola(false); listaNodos[i].setCuerpo(true); listaNodos[i].setIrA(nodo4); break; } } nodo4.setCola(true); listaNodos.Add(nodo1); listaNodos.Add(nodo2); listaNodos.Add(nodo3); listaNodos.Add(nodo4); }
public void nuevoCeroUno(string aristaA) // ? un parametro string { // crea 6 nodos NodoThompson nodo1 = new NodoThompson(this.contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(this.contadorNodos); contadorNodos++; NodoThompson nodo3 = new NodoThompson(this.contadorNodos); contadorNodos++; NodoThompson nodo4 = new NodoThompson(this.contadorNodos); contadorNodos++; NodoThompson nodo5 = new NodoThompson(this.contadorNodos); contadorNodos++; NodoThompson nodo6 = new NodoThompson(this.contadorNodos); contadorNodos++; nodo1.setAristaA("ε"); nodo1.setAristaB("ε"); nodo1.setIrA(nodo2); nodo1.setIrB(nodo4); nodo1.setCabeza(true); nodo2.setAristaA(aristaA); nodo2.setIrA(nodo3); nodo2.setCuerpo(true); nodo3.setAristaA("ε"); nodo3.setIrA(nodo6); nodo3.setCuerpo(true); nodo4.setAristaA("ε"); nodo4.setIrA(nodo5); nodo4.setCuerpo(true); nodo5.setAristaA("ε"); nodo5.setIrA(nodo6); nodo5.setCuerpo(true); nodo6.setCola(true); this.listaNodos.Add(nodo1); this.listaNodos.Add(nodo2); this.listaNodos.Add(nodo3); this.listaNodos.Add(nodo4); this.listaNodos.Add(nodo5); this.listaNodos.Add(nodo6); }
public void unomasGrafo() { NodoThompson nodo1 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo3 = new NodoThompson(contadorNodos); contadorNodos++; int banderaCola = 0; int banderaCabeza = 0; List <NodoThompson> copiarGrafo = new List <NodoThompson>(); int nodoCop = 0; for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { banderaCabeza++; } if (listaNodos[i].getCola()) { banderaCola++; } if ((banderaCabeza == 1 && banderaCola == 1) || (banderaCabeza == 0 && banderaCola == 1) || (banderaCabeza == 1 && banderaCola == 0)) { NodoThompson nodo = new NodoThompson(listaNodos[i].getIdentificador()); nodo.setAristaA(listaNodos[i].getAristaA()); nodo.setAristaB(listaNodos[i].getAristaB()); nodo.setCabeza(listaNodos[i].getCabeza()); nodo.setCuerpo(listaNodos[i].getCuerpo()); nodo.setCola(listaNodos[i].getCola()); copiarGrafo.Add(nodo); Console.WriteLine("nodo: " + listaNodos[i].getIdentificador() + "cabeza: " + listaNodos[i].getCabeza() + " cuerpo: " + listaNodos[i].getCuerpo() + " cola: " + listaNodos[i].getCola()); nodoCop++; } } for (int i = 0; i < copiarGrafo.Count; i++) { if (copiarGrafo[i].getCola()) { for (int j = 0; j < copiarGrafo.Count; j++) { if (copiarGrafo[j].getCabeza()) { copiarGrafo[i].setAristaB("ε"); copiarGrafo[i].setIrB(copiarGrafo[j]); break; } } break; } } nodo1.setAristaA("ε"); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); nodo1.setIrA(listaNodos[i]); break; } } nodo1.setCabeza(true); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setCuerpo(true); listaNodos[i].setCola(false); listaNodos[i].setIrA(nodo2); listaNodos[i].setAristaA("ε"); break; } } nodo2.setAristaA("ε"); for (int i = 0; i < copiarGrafo.Count; i++) { if (copiarGrafo[i].getCabeza()) { copiarGrafo[i].setCabeza(false); copiarGrafo[i].setCuerpo(true); nodo2.setIrA(copiarGrafo[i]); break; } } nodo2.setAristaB("ε"); nodo2.setIrB(nodo3); for (int i = 0; i < copiarGrafo.Count; i++) { if (copiarGrafo[i].getCola()) { copiarGrafo[i].setCola(false); copiarGrafo[i].setCuerpo(true); copiarGrafo[i].setAristaA("ε"); copiarGrafo[i].setIrA(nodo3); break; } } nodo3.setCola(true); copiarGrafo.Reverse(); ////////// for (int i = 0; i < copiarGrafo.Count; i++) { for (int j = 0; j < listaNodos.Count; j++) { if (copiarGrafo[i].getIdentificador() == listaNodos[j].getIdentificador()) { if (listaNodos[j].getIrA() != null) { for (int x = 0; x < copiarGrafo.Count; x++) { if (listaNodos[j].getIrA().getIdentificador() == copiarGrafo[x].getIdentificador()) { copiarGrafo[i].setIrA(copiarGrafo[x]); break; } } } if (listaNodos[j].getIrB() != null) { for (int x = 0; x < copiarGrafo.Count; x++) { if (listaNodos[j].getIrB().getIdentificador() == copiarGrafo[x].getIdentificador()) { copiarGrafo[i].setIrB(copiarGrafo[x]); break; } } } } } } ////////// listaNodos.Add(nodo1); listaNodos.Add(nodo2); //Console.WriteLine("auxiliar: " + copiarGrafo.Count); for (int i = 0; i < copiarGrafo.Count; i++) { copiarGrafo[i].setIdentificador(contadorNodos); contadorNodos++; listaNodos.Add(copiarGrafo[i]); } listaNodos.Add(nodo3); Console.WriteLine(nodoCop + " hola"); }
public void oGrafoToken(string arista, bool dosGrafos) { if (dosGrafos == false) { NodoThompson nodo1 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo3 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo4 = new NodoThompson(contadorNodos); contadorNodos++; nodo1.setAristaA("ε"); //lo apuntamos a la cabeza del grafo en la lista, y esta sera la nueva cabeza for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { nodo1.setIrA(listaNodos[i]); listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); break; } } nodo1.setAristaB("ε"); nodo1.setIrB(nodo2); nodo1.setCabeza(true); nodo2.setAristaA(arista); nodo2.setIrA(nodo3); nodo2.setCuerpo(true); nodo3.setAristaA("ε"); nodo3.setIrA(nodo4); nodo3.setCuerpo(true); nodo4.setCola(true); //buscamos la cola del grafo y la apuntamos al nodo 4, la nueva cola for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setAristaA("ε"); listaNodos[i].setIrA(nodo4); listaNodos[i].setCola(false); listaNodos[i].setCuerpo(true); break; } } listaNodos.Add(nodo1); listaNodos.Add(nodo2); listaNodos.Add(nodo3); listaNodos.Add(nodo4); } else { NodoThompson nodo1 = new NodoThompson(contadorNodos); contadorNodos++; NodoThompson nodo2 = new NodoThompson(contadorNodos); contadorNodos++; nodo1.setAristaA("ε"); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { nodo1.setIrA(listaNodos[i]); listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); break; } } nodo1.setAristaB("ε"); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCabeza()) { nodo1.setIrB(listaNodos[i]); listaNodos[i].setCabeza(false); listaNodos[i].setCuerpo(true); break; } } nodo1.setCabeza(true); nodo2.setCola(true); for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setAristaA("ε"); listaNodos[i].setIrA(nodo2); listaNodos[i].setCola(false); listaNodos[i].setCuerpo(true); break; } } for (int i = listaNodos.Count - 1; i >= 0; i--) { if (listaNodos[i].getCola()) { listaNodos[i].setAristaA("ε"); listaNodos[i].setIrA(nodo2); listaNodos[i].setCola(false); listaNodos[i].setCuerpo(true); break; } } listaNodos.Add(nodo1); listaNodos.Add(nodo2); } }