예제 #1
0
 public void desconectar(nodoDoble x)
 {
     if (primero == x)
     {
         primero = x.retornaLd();
         if (primero == null)
         {
             ultimo = null;
         }
         else
         {
             primero.asignaLi(null);
         }
         return;
     }
     if (x == ultimo)
     {
         ultimo = x.retornaLi();
         ultimo.asignaLd(null);
     }
     else
     {
         x.retornaLi().asignaLd(x.retornaLd());
         x.retornaLd().asignaLi(x.retornaLi());
     }
 }
예제 #2
0
 public void conectar(nodoDoble x, nodoDoble y)
 {
     if (y == null)
     {
         if (primero == null)
         {
             ultimo = x;
         }
         else
         {
             x.asignaLd(primero);
             primero.asignaLi(x);
         }
         primero = x;
         return;
     }
     if (y == ultimo)
     {
         x.asignaLi(y);
         y.asignaLd(x);
         ultimo = x;
     }
     else
     {
         x.asignaLi(y);
         x.asignaLd(y.retornaLd());
         y.asignaLd(x);
         y.retornaLd().asignaLi(x);
     }
 }
예제 #3
0
 public Boolean finDeRecorrido(nodoDoble p)
 {
     if (p == null)
     {
         return(true);
     }
     return(false);
 }
예제 #4
0
 public void borrar(nodoDoble x)
 {
     if (x == null)
     {
         Console.WriteLine("Not found");
         return;
     }
     desconectar(x);
 }
예제 #5
0
        public void recorreDerIzq()
        {
            nodoDoble p = getUltimo();

            while (!finDeRecorrido(p))
            {
                Console.WriteLine(p.retornaDato());
                p = p.retornaLi();
            }
        }
예제 #6
0
        public void recorreIzqDer()
        {
            nodoDoble p = getPrimero();

            while (!finDeRecorrido(p))
            {
                Console.WriteLine(p.retornaDato());
                p = p.retornaLd();
            }
        }
예제 #7
0
        public nodoDoble anterior(nodoDoble x)
        {
            nodoDoble p = getPrimero();

            while (p.retornaLi() != x)
            {
                p = p.retornaLi();
            }
            return(p);
        }
예제 #8
0
        public nodoDoble buscarDato(object d)
        {
            nodoDoble p = getPrimero();

            while (!finDeRecorrido(p) && !p.retornaDato().Equals(d))
            {
                p = p.retornaLd();
            }
            return(p);
        }
예제 #9
0
        public nodoDoble buscarDondeInsertar(object d)
        {
            nodoDoble p = getPrimero();
            nodoDoble y = anterior(p);

            while (!finDeRecorrido(p) && (int)p.retornaDato() < (int)d) //REVISAR EN CASO DE ERROR
            {
                y = p;
                p = p.retornaLd();
            }
            return(y);
        }
예제 #10
0
        private int compararFichas(Ficha fit) //1 para izq, 2 para derecha
        {
            nodoDoble nfi = listaTablero.getPrimero();
            nodoDoble nfd = listaTablero.getUltimo();

            int fi = (int)nfi.retornaDato();
            int fd = (int)nfd.retornaDato();

            if (fit.getN1() == fi)
            {
                listaTablero.insertar(fit.getN2(), null);
                Console.WriteLine(fit.getN2());
                return(1);
            }

            if (fit.getN1() == fd)
            {
                listaTablero.insertar(fit.getN2(), nfd);
                Console.WriteLine(fit.getN2());
                return(2);
            }
            if (fit.getN2() == fi)
            {
                listaTablero.insertar(fit.getN1(), null);
                Console.WriteLine(fit.getN1());
                return(3);
            }

            if (fit.getN2() == fd)
            {
                Console.WriteLine(fit.getN1());
                listaTablero.insertar(fit.getN1(), nfd);
                return(4);
            }
            return(0);
        }
예제 #11
0
        public void insertar(object d, nodoDoble y)
        {
            nodoDoble x = new nodoDoble(d);

            conectar(x, y);
        }
예제 #12
0
 public void setUltimo(nodoDoble ultimo)
 {
     this.ultimo = ultimo;
 }
예제 #13
0
 public void setPrimero(nodoDoble primero)
 {
     this.primero = primero;
 }
예제 #14
0
 public void asignaLd(nodoDoble x)
 {
     ld = x;
 }
예제 #15
0
 public void asignaLi(nodoDoble x)
 {
     li = x;
 }
예제 #16
0
 public nodoDoble(object d)
 {
     this.dato = d;
     li        = null;
     ld        = null;
 }