Foro de elhacker.net

Programación => Java => Mensaje iniciado por: goll9d en 21 Enero 2012, 00:15 am



Título: ayuda...Lista doblemente enlazada
Publicado por: goll9d en 21 Enero 2012, 00:15 am
Tengo una pequeña duda con esto...no se como programarlo las listas simples si se como se hace pero mi duda son las dobles como programo para que el nodo tenga una referencia al nodo anterior???? :huh: :huh:


Título: Re: ayuda...Lista doblemente enlazada
Publicado por: Ari Slash en 21 Enero 2012, 02:47 am
pues tu lista debe guardar la direccion de tu ultimo eslavon o nodo,

-creas el nuevo nodo
-el puntero anterior del nodo (nuevonodo->anterior), lo apuntas ala direccion del ultimo de la lista (quedaras con tu lista y tu nuevonodo->anterior apuntando al mismo nodo)
-luego sobreescribes la direccion del ultimo de la lista, por la direccion de tu nuevo nodo.

esos son los pasos logicos, al final es lo mismo que una lista enlazada simple pero antes de guardar la direccion del ultimo nodo, apuntas el nuevonodo->anterior hacia ese nodo anterior, para no perder su direccion,

espero que te sirva, si es que no enrede mucho xD


saludos


Título: Re: ayuda...Lista doblemente enlazada
Publicado por: goll9d en 22 Enero 2012, 04:50 am
Bueno me parece que tal vez te entendí ;D para la lista simple esto es lo que yo se

public class lista{

private nodo primero = null;

 private class nodo {

        private String nom;
        private nodo siguiente;

        private nodo() {
        }
    }

public void añadir() {//esta parte del código entiendo la lógica no hay problema
        String nom = JOptionPane.showInputDialog("nombre:");
        nodo q = new nodo();
        q.nom = nom;
        q.siguiente = primero;
        primero = q;
    }

public void borrar() {
        nodo q = primero;
        nodo ant = null;
        String nom1 = JOptionPane.showInputDialog("Nombre:");
       
        while (q != null && !q.nom.equals(nom1)) {
            ant = q;
            q = q.siguiente;
        }
        if (ant == null) {
            primero= q.siguiente;
        } else {
            ant.siguiente = q.siguiente;
        }
    }
este codigo lo hice yo y si entiendo la logica pero como ya mencione mi duda es el nodo anterior. :P :P Disculpen la molestia por ser tan cerrado de mente jajaja :laugh: :laugh: