miércoles, 8 de febrero de 2017

LISTAS DOBLES


Ahora es el turno de las listas doblemente enlazadas. 
Este tipo de listas se diferencian de las simples en que, ahora cada nodo ademas de contener la un enlace a la dirección siguiente, tendrá una con la dirección del nodo anterior al actual. 
La ventaja que nos proporciona este tipo de lista es que podemos recorrer la lista desde el nodo inicial al final y desde el final a el inicial. Otra ventaja de las listas doblemente enlazadas es que podemos usar un puntero a la celda que contiene el i-ésimo elemento de una lista para representar la posición i, mejor que usar el puntero a la celda anterior aunque lógicamente, también es posible la implementación similar a la expuesta en las listas simples haciendo uso de la cabecera.


A continuación voy a dejar un cogido en Java Netbeans donde inserto y creo mi nodo de tipo Persona que tiene de dato un nombre.
  •  Primero creo mi clase Persona

public class Persona {
    String nombre;
    public Persona(String nombre){
        this.nombre=nombre;
    }

    public Object getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
}
  • Luego mi clase Nodo
public class Nodo {
    Persona dato;
    Nodo siguiente;
    Nodo anterior;
    public Nodo(Persona dato){
        this.dato=dato;
        siguiente=anterior=null;    
    }
       
}


  • Mi clase Procedimiento


public class Procedimiento {
   Nodo fin;
   public Procedimiento(){
       fin=null;
   }
       public boolean esVacia(){
        return (this.fin == null);
    }
           public void insertarCabecera(String dato){
               Persona p=new Persona(dato);
       Nodo nuevo=new Nodo(p);
        if(esVacia()){
            fin = nuevo;
        }
    }
           public void Mostrar(){
               Nodo temp = fin;
        if(! esVacia()){
            while (temp!= null){
                System.out.println("["+temp.dato.nombre+"]" );
                temp=temp.siguiente;
            }
        
        }else{
            System.out.println("La lista esta vacia");
        }
        
        
    }

           
}


  • Y mi clase Test


public class TestListaDoble {
    public static void main(String[] args) {
        Procedimiento p=new Procedimiento();
        p.insertarCabecera("andrea");
        p.Mostrar();
        
    }
    
}

No hay comentarios:

Publicar un comentario