• Miércoles 1 de Mayo de 2024, 14:40

Autor Tema:  listas doblemente enlazadas como imprimirlas  (Leído 1893 veces)

neoh

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
listas doblemente enlazadas como imprimirlas
« en: Martes 4 de Octubre de 2011, 02:52 »
0
hola como estan uncordial saludo que bueno volverme parte de esta gran comunidad y poder ayudar y de paso poder pedir ayuda.
le pido ayuda amis colegas pues no he podido hacerlo.
resulta que tengo un codigo de listas doblemente enlazadas.
el cual imprime su contenido de la variable sig
pero no me imprime el contenido de la lista ant.
lo qu enecesito es que imprima el enlace sig y el enlace ant
se que e scuando sig llega a null la lsita ant se devuelve y imprime lo que se guardo osea las referencias.
si me pueden ayudar queod eternamente agradecido por que he miraod por todo lado y no pude =S.
el codigo es el siguiente loq ue llevo.

Código: [Seleccionar]
package ListasEnlazadas;

public class Listas {

    private Object dato;
    private Listas sig;
    private Listas ant;

    public Listas() {
        dato = null;
        sig = null;
        ant = null;
    }

    public void InsertarFinal(Object x) {
       int tamanio=tamaño();
       if(tamanio<=0){
            dato = x;
            sig = new Listas();
       }else
        if (vacia()) {
            dato = x;
            sig.ant = sig;
            sig = new Listas();

        } else {
            sig.InsertarFinal(x);
        }
    }

    public boolean vacia() {
        return dato == null && sig == null;
    }

    public String toString() {
        String res = "[" + restosig() + "]";
        return res;
    }

    private String restosig() {
        String res = "";
        if (!vacia()) {
            res = dato.toString();
            if (!sig.vacia()) {
                res = res + ", " + sig.restosig();
            }
        }
        return res;
    }

    private String restoant() {
        String res = "";
        if (!vacia()) {
            res = dato.toString();
           if (!ant.vacia()) {
                res = res + "," + sig.ant.restoant();
           
        }
       
    }
        return res;
    }
    public int tamaño() {
        if (vacia()) {
            return 0;
        }
        return 1 + sig.tamaño();
    }

    public boolean buscar(Object x) {
        if (vacia()) {
            return false;
        }
        if (dato.equals(x)) {
            return true;
        }
        return sig.buscar(x);
    }

    public Object obtener(int pos) {
        if (vacia()) {
            return null;
        }
        if (pos == 0) {
            return dato;
        }
        return sig.obtener(pos - 1);
    }

    public void modificar(int pos, Object x) {
        if (vacia() || pos < 0) {
            return;
        }
        if (pos == 0) {
            dato = x;
        } else {
            sig.modificar(pos - 1, x);
        }
    }

    public Object eliminar(Object x) {
        Object res = null;
        if (!vacia()) {
            if (dato.equals(x)) {
                res = dato;
                dato = sig.dato;
                sig = sig.sig;
            } else {
                res = sig.eliminar(x);
            }
        }
        return res;
    }

esta hecho en metodos recursivos
y lo qu ese necesita es que la lista imprima el sig y el nat osea las referencias de la lista doblemente enlazada gracias al que me pueda ayudar.
buen anoche colegas.