public ListaThomson UnionI() { ListaThomson Pila = new ListaThomson(); NodoThomson Iniciovacio = new NodoThomson("epsilon", "or"); NodoThomson Finalvacio = new NodoThomson("epsilon", "fin_or"); NodoThomson vacio3 = new NodoThomson("epsilon"); NodoThomson vacio2 = new NodoThomson("epsilon"); NodoThomson vacio = new NodoThomson("epsilon"); if (aux1.GetTipo() == "unica") { Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = vacio3; aux1.GetFinal().sig1 = vacio; vacio3.sig1 = vacio2; vacio.sig1 = Finalvacio; vacio2.sig1 = Finalvacio; } else if (aux1.GetTipo() == "doble") { Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = vacio3; aux1.GetFinal().sig1 = Finalvacio; vacio3.sig1 = vacio2; vacio2.sig1 = Finalvacio; } Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); return(Pila); }
public LinkedList <NodoThomson> llenaListaLineal() { lista_lineal_nodos = new LinkedList <NodoThomson>(); NodoThomson aux = this.Inicio; while (aux != null) { if (repetido(aux.GetEstado()) != true) { lista_lineal_nodos.AddLast(aux); } if (aux.GetTipo().CompareTo("or") == 0) {// tengo otra lista hacia otro lado if (aux.sig2 != null && repetido(aux.sig2.GetEstado()) != true) { llenaListaLineal(aux.sig2); } } aux = aux.sig1; } return(lista_lineal_nodos); }
public void imprimirPorDebajo(NodoThomson aux) { while (aux.sig1.GetTipo().CompareTo("fin_or") != 0) { if (aux.GetTipo().CompareTo("or") == 0) { if (aux.sig2 != null) { // imprimirPorDebajo(aux.sig2); } } Console.WriteLine("-->" + " ID: " + aux.GetEstado() + " nombrePuntero:" + aux.GetTranscision()); aux = aux.sig1; } }
public void AgregarDeUltimo() { NodoThomson NodoT = new NodoThomson(); if (Inicio == null) { NodoT = Inicio; Inicio = Fin; } else { Fin.sig1 = NodoT; NodoT = Fin; } }
public ListaThomson Unir() { NodoThomson vacio = new NodoThomson("epsilon"); NodoThomson Iniciovacio = new NodoThomson("epsilon"); ListaThomson Pila = new ListaThomson(); NodoThomson Finalvacio = new NodoThomson("epsilon"); if (hijounico.GetTipo() == "unica") { Iniciovacio.sig1 = hijounico.GetInicio(); hijounico.GetFinal().sig1 = vacio; vacio.sig2 = hijounico.GetInicio(); vacio.sig1 = Finalvacio; Iniciovacio.sig2 = Finalvacio; Pila.setTipo("doble"); Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); } else if (hijounico.GetTipo() == "doble") { Iniciovacio.sig1 = hijounico.GetInicio(); hijounico.GetFinal().sig2 = hijounico.GetInicio(); hijounico.GetFinal().sig1 = vacio; Iniciovacio.sig2 = vacio; Pila.setInicio(Iniciovacio); Pila.setTFinal(vacio); } else if (hijounico.GetInicio().GetTranscision() == "or") { Iniciovacio.sig1 = hijounico.GetInicio(); Iniciovacio.sig2 = Finalvacio; hijounico.GetInicio().sig2 = Finalvacio; hijounico.GetFinal().sig1 = Finalvacio; hijounico.GetFinal().sig2 = hijounico.GetInicio(); Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); } return(Pila); }
public void llenaListaLineal(NodoThomson aux) // sobrecarga de metodo { while (aux != null) { if (repetido(aux.GetEstado()) != true) { lista_lineal_nodos.AddLast(aux); } if (aux.GetTipo().CompareTo("or") == 0) {// tengo otra lista hacia otro lado if (aux.sig2 != null && repetido(aux.sig2.GetEstado()) != true) { llenaListaLineal(aux.sig2); } } aux = aux.sig1; } }
public ListaThomson Union() { ListaThomson Pila = new ListaThomson(); NodoThomson vacio = new NodoThomson("epsilon"); NodoThomson Iniciovacio = new NodoThomson("epsilon"); NodoThomson Finalvacio = new NodoThomson("epsilon"); if (aux1.GetTipo() == "unica") { Iniciovacio.sig1 = aux1.GetInicio(); aux1.GetFinal().sig1 = vacio; vacio.sig2 = aux1.GetInicio(); vacio.sig1 = Finalvacio; Pila.setTipo("doble"); Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); } else if (aux1.GetTipo() == "doble") { Iniciovacio.sig1 = aux1.GetInicio(); aux1.GetFinal().sig1 = Finalvacio; aux1.GetFinal().sig2 = aux1.GetInicio(); Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); } else if (aux1.GetInicio().GetTranscision() == "or") { aux1.GetFinal().sig1 = Finalvacio; aux1.GetFinal().sig2 = aux1.GetInicio(); Pila.setInicio(aux1.GetInicio()); Pila.setTFinal(Finalvacio); } return(Pila); }
public void RecursivoMov(NodoThomson N, string Trans) { if (N.sig1 != null) { if (N.GetTranscision().Equals(Trans)) { lista_mov.AddLast(N.sig1); RecursivoMov(N.sig1, Trans); } } if (N.sig2 != null) { if (N.GetTranscision().Equals(Trans)) { lista_mov.AddLast(N.sig2); RecursivoMov(N.sig2, Trans); } } }
public void RecursivoCerr(NodoThomson n, string trans) { lista_ceradura.AddLast(n); if (n.sig1 != null) { if (n.GetTranscision().Equals(trans)) { RecursivoCerr(n.sig1, trans); } } if (n.sig2 != null) { if (n.GetTranscision().Equals(trans)) { RecursivoCerr(n.sig2, trans); } } }
public void imprimir() { int x = 1; NodoThomson aux = this.Inicio; while (aux != null) { if (aux.GetTipo().CompareTo("or") == 0) {// necesito imprimir por debajo Console.WriteLine(x + "." + " ID: " + aux.GetEstado() + " nombrePuntero:" + aux.GetTranscision()); if (aux.sig2 != null) { imprimirPorDebajo(aux.sig2); } } Console.WriteLine(x + "." + " ID: " + aux.GetEstado() + " nombrePuntero:" + aux.GetTranscision()); x++; aux = aux.sig1; } }
public ListaThomson junta() {// .a-. . = nodo letras = transiciones si me entendes eso ? ListaThomson Pila = new ListaThomson(); NodoThomson nulo = new NodoThomson("epsilon"); hijo1.GetFinal().sig1 = hijo2.GetInicio(); hijo2.GetFinal().sig1 = nulo; NodoThomson aux = hijo1.GetInicio(); /* // apuntaste una lista string cada vez que recorro la lista * //------a * //------a * // a ---------b */ Pila.setInicio(hijo1.GetInicio()); Pila.setTFinal(nulo); Pila.setTipo("doble"); MessageBox.Show(Pila.GetInicio().GetTranscision()); return(Pila); }
// tipo = 0 lista simple // tipo = 1 listaCompuesta // tipo = 2 Lista OR pura public ListaThomson() { NodoThomson Fin = null; NodoThomson Inicio = null; }
public ListaThomson Union() { ListaThomson Pila = new ListaThomson(); NodoThomson Iniciovacio = new NodoThomson("epsilon", "or"); NodoThomson Finalvacio = new NodoThomson("epsilon", "fin_or"); NodoThomson vacio2 = new NodoThomson("epsilon"); NodoThomson vacio = new NodoThomson("epsilon"); if (aux1.GetTipo() == "unica" && aux2.GetTipo() == "unica") { MessageBox.Show("si" + aux1.GetTipo() + aux2.GetTipo()); Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = aux2.GetInicio(); aux1.GetFinal().sig1 = vacio; aux2.GetFinal().sig1 = vacio2; vacio.sig1 = Finalvacio; vacio2.sig1 = Finalvacio; Pila.setTipo("doble"); } else if (aux1.GetTipo() == "doble" && aux2.GetTipo() == "doble") { MessageBox.Show("si es doble"); Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = aux2.GetInicio(); aux1.GetFinal().sig1 = Finalvacio; aux2.GetFinal().sig1 = Finalvacio; Pila.setTipo("doble"); } else if (aux1.GetTipo() == "doble" && aux2.GetTipo() == "unica") { MessageBox.Show("unica y doble"); Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = aux2.GetInicio(); aux1.GetFinal().sig1 = Finalvacio; aux2.GetFinal().sig1 = vacio2; vacio.sig1 = Finalvacio; Pila.setTipo("doble"); } else if (aux1.GetTipo() == "unica" && aux2.GetTipo() == "doble") { MessageBox.Show("unica y doble"); Iniciovacio.sig1 = aux1.GetInicio(); Iniciovacio.sig2 = aux2.GetInicio(); aux1.GetFinal().sig1 = Finalvacio; aux2.GetFinal().sig1 = vacio2; vacio2.sig1 = Finalvacio; Pila.setTipo("doble"); } else if (aux1.GetInicio().GetTranscision() == "or") { aux1.GetInicio().sig2 = Finalvacio; aux1.GetFinal().sig1 = Finalvacio; aux1.GetFinal().sig2 = aux1.GetInicio(); Pila.setInicio(aux1.GetInicio()); Pila.setTFinal(Finalvacio); Pila.setTipo("doble"); } Pila.setInicio(Iniciovacio); Pila.setTFinal(Finalvacio); return(Pila); }
// new NodoTHomson("transicion", id) ; public void crearTerminales(NodoThomson nuevo) { this.Fin = nuevo; this.Inicio = nuevo; this.tipo = "unica"; }
public ListaThomson(NodoThomson nuevo) { this.Fin = nuevo; this.Inicio = nuevo; this.tipo = "unica"; }
public void Menu() { for (int i = Thomson.Count() - 1; i >= 0; i--) { Nodo aux = Thomson.ElementAt(i); if (aux.getT() == Nodo.TipoNodo.Terminal) { NodoThomson nuevo = new NodoThomson(aux.getDescripcion()); // ya guarda la transicion ListaThomson li = new ListaThomson(nuevo); li.setTipo("unica"); PilaT.AddLast(li); } else if (aux.getT() == Nodo.TipoNodo.CerraduraA) { ListaThomson aux1 = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); Asterisco A = new Asterisco(aux1); ListaThomson R = A.Unir(); PilaT.AddLast(R); } else if (aux.getT() == Nodo.TipoNodo.CerraduraI) { ListaThomson aux1 = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); OR A = new OR(aux1); ListaThomson R = A.UnionI(); PilaT.AddLast(R); } else if (aux.getT() == Nodo.TipoNodo.Concatenacion) { // . ab // sacar los 2 de la cima // meter la lista resultante a la pila y cambiar el tipo ListaThomson aux1 = new ListaThomson(); ListaThomson aux2 = new ListaThomson(); ListaThomson R = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); aux2 = PilaT.Last(); PilaT.RemoveLast(); Punto_Concatenacion concatena = new Punto_Concatenacion(aux1, aux2); ListaThomson resultado = concatena.junta(); PilaT.AddLast(resultado); // lo meto a la pila } else if (aux.getT() == Nodo.TipoNodo.OR) { ListaThomson aux1 = new ListaThomson(); ListaThomson aux2 = new ListaThomson(); ListaThomson R = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); aux2 = PilaT.Last(); PilaT.RemoveLast(); OR or = new OR(aux1, aux2); R = or.Union(); PilaT.AddLast(R); } else if (aux.getT() == Nodo.TipoNodo.CerraduraP) { ListaThomson aux1 = new ListaThomson(); ListaThomson aux2 = new ListaThomson(); ListaThomson R = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); Mas mas = new Mas(aux1); R = mas.Union(); PilaT.AddLast(R); } else if (aux.getT() == Nodo.TipoNodo.CerraduraI) { ListaThomson aux1 = new ListaThomson(); ListaThomson aux2 = new ListaThomson(); ListaThomson R = new ListaThomson(); aux1 = PilaT.Last(); PilaT.RemoveLast(); Mas mas = new Mas(aux1); R = mas.Union(); PilaT.AddLast(R); } } }
public void setInicio(NodoThomson Inicio) // XY { this.Inicio = Inicio; }
public void setTFinal(NodoThomson Final) // XY { this.Fin = Final; }