コード例 #1
0
        public void operdor()
        {
            nodo actual = primero;
            int  x, y;

            while (actual != null)
            {
                if (actual != null && actual.Siguiente != null && actual.Siguiente.Siguiente != null)
                {
                    if (actual.Tipo == 3 && actual.Siguiente.Tipo == 1 && actual.Siguiente.Siguiente.Tipo == 1)
                    {
                        insertarIzquierda(actual, actual.Siguiente);
                        insertarDerescha(actual, actual.Siguiente.Siguiente);
                        x = actual.Siguiente.Id;
                        y = actual.Siguiente.Siguiente.Id;
                        //  Console.WriteLine("eliminar: " + x);
                        //  Console.WriteLine("eliminar: " + y);
                        eliminar(x);
                        eliminar(y);
                        actual.Tipo = 1;
                    }
                }


                actual = actual.Siguiente;
            }
        }
コード例 #2
0
        public nodo concatenacion(nodo primero, nodo segundo)
        {
            primero.U.Siguiente = segundo;


            return(primero);
        }
コード例 #3
0
 public thompsom(String nombre, nodo r)
 {
     this.nombre  = nombre;
     this.id      = 0;
     this.primero = null;
     this.segundo = null;
     this.raiz    = r;
     this.p       = false;
     this.s       = false;
 }
コード例 #4
0
        private void recorrerArbol(nodo r)
        {
            if (r != null)
            {
                Console.WriteLine(r.Lexema + "  TIPO" + r.Tipo);
                recorrerArbol(r.Izquierda);

                recorrerArbol(r.Derecha);
            }
        }
コード例 #5
0
        public void recorrerLista()
        {
            nodo actual = primero;

            while (actual != null)
            {
                Console.WriteLine("        " + actual.Id + " Lexema: " + actual.Lexema + "  tipo: " + actual.Tipo + " Logico: " + actual.Logico);

                actual = actual.Siguiente;
            }
        }
コード例 #6
0
 public nodo(int id, string lexema, int tipo, int logico)
 {
     this.id        = id;
     this.lexema    = lexema;
     this.tipo      = tipo;
     this.logico    = logico;
     this.siguiente = null;
     this.derecha   = null;
     this.izquierda = null;
     this.u         = null;
 }
コード例 #7
0
        public nodo a(string hijo)
        {
            nodo nuevo = new nodo(id, hijo, 20, 20);

            id++;
            nodo ultimo = new nodo(id, "", 30, 30);

            id++;
            primero.Siguiente = ultimo;
            primero.U         = ultimo;

            return(nuevo);
        }
コード例 #8
0
        public nodo alternacion(nodo primero, nodo segundo)
        {
            nodo nuevo = new nodo(id, "", 30, 30);

            id++;
            nodo ultimo = new nodo(id, "", 30, 30);

            id++;
            nuevo.Izquierda     = primero;
            nuevo.Derecha       = segundo;
            primero.U.Siguiente = ultimo;
            segundo.U.Siguiente = ultimo;

            return(nuevo);
        }
コード例 #9
0
        public void insertar(string lexema, int tipo, int logico)
        {
            nodo nuevo = new nodo(id, lexema, tipo, logico);

            id++;
            if (primero == null)
            {
                primero = nuevo;
                ultimo  = primero;
            }
            else
            {
                ultimo.Siguiente = nuevo;
                ultimo           = nuevo;
            }
        }
コード例 #10
0
        public nodo cuantificacionM(nodo unico)
        {
            nodo nuevo = new nodo(id, "", 30, 30);

            id++;
            nodo ultimo = new nodo(id, "", 30, 30);

            id++;
            nuevo.Siguiente   = unico;
            nuevo.Derecha     = ultimo;
            unico.U.Siguiente = ultimo;
            unico.U.Izquierda = unico;
            nuevo.U           = ultimo;

            return(nuevo);
        }
コード例 #11
0
 public void manejo(nodo nuevo)
 {
     if (p == false)
     {
         primero = nuevo;
         p       = true;
     }
     else if (p == true && s == false)
     {
         segundo = nuevo;
         s       = true;
     }
     else if (p == true && s == true)
     {
         primero = nuevo;
         segundo = null;
         s       = false;
     }
 }
コード例 #12
0
        public void recorrer(nodo r)
        {
            if (r != null)
            {
                recorrer(r.Izquierda);

                recorrer(r.Derecha);

                if (r.Logico == 8 || r.Logico == 3)
                {
                    manejo(a(r.Lexema));
                }
                else if (r.Logico == 5 && r.Lexema.Equals("."))
                {
                    manejo(concatenacion(primero, segundo));
                }
                else if (r.Logico == 5 && r.Lexema.Equals("|"))
                {
                    manejo(alternacion(primero, segundo));
                }
            }
        }
コード例 #13
0
        public void eliminar(int id)
        {
            nodo actual   = primero;
            nodo anterior = null;

            while (actual != null)
            {
                if (actual.Id == id)
                {
                    if (actual == primero)
                    {
                        primero = primero.Siguiente;
                    }
                    else
                    {
                        anterior.Siguiente = actual.Siguiente;
                    }
                }

                anterior = actual;
                actual   = actual.Siguiente;
            }
        }
コード例 #14
0
        public void operadorUnico()
        {
            nodo actual = primero;

            ///nodo aux=null;

            while (actual != null)
            {
                if (actual != null && actual.Siguiente != null)
                {
                    if (actual.Tipo == 2 && actual.Siguiente.Tipo == 1)
                    {
                        //  Console.WriteLine("encontrado:   " + actual.Lexema + "   ingreso I" + actual.Siguiente.Lexema);
                        insertarIzquierda(actual, actual.Siguiente);
                        eliminar(actual.Siguiente.Id);

                        actual.Tipo = 1;
                    }
                }


                actual = actual.Siguiente;
            }
        }
コード例 #15
0
 public nodoM(string nombre, nodo contenido)
 {
     this.nombre    = nombre;
     this.contenido = contenido;
     this.siguiente = null;
 }
コード例 #16
0
 public void insertarIzquierda(nodo actual, nodo insertar)
 {
     actual.Izquierda = insertar;
     // eliminar(insertar.Id);
 }
コード例 #17
0
 public Lista()
 {
     this.primero = null;
     this.ultimo  = null;
 }
コード例 #18
0
 public void insertarDerescha(nodo actual, nodo insertar)
 {
     actual.Derecha = insertar;
     //eliminar(insertar.Id);
 }