jueves, 8 de diciembre de 2011

Estructura de datos TESOEM

 

Les dejo el ejemplo de listas dobles enlazadas

Archivo NodosEnlazados.java

public class NodosEnlazados{
  public String dato; // guardamos un dato de tipo cadena
  public NodosEnlazados siguiente;
  public NodosEnlazados anterior;

   public NodosEnlazados(String palabra){
     dato=palabra;
     siguiente=null;
     anterior=null;
   }
}

Archivos  ListaDobleEnlazada.java

import java.util.*;
public class ListaDobleEnlazada{

  public NodosEnlazados DatosCompletos;

  public ListaDobleEnlazada(){
   DatosCompletos=null;
  }

public void RecibeLista(List palabras){
  List ListaDatos = new ArrayList();
  ListaDatos = palabras;
  int contador = 0;

  //llamo la funcion agregarelementos y le paso la palabar a agregar a la listadoble
  // for que recorrera  la lista de palabras para agregarlas
     for (Object Datos : ListaDatos){   
       String auxDatos = Datos.toString();
       AgregaElementos(auxDatos);
     }
}

private void AgregaElementos(String palabra){
  
   LocalizarUltimo();
   NodosEnlazados temp = new NodosEnlazados(palabra);

   if (DatosCompletos==null)
      DatosCompletos=temp;
   else{
      temp.siguiente=DatosCompletos;
      DatosCompletos.anterior=temp;
   }
}

public void imprimir(){
    LocalizarPrimero();
while (DatosCompletos != null){
    
System.out.println("valor de lista datos "+ DatosCompletos.dato);
     DatosCompletos=DatosCompletos.anterior;
}
}

public NodosEnlazados RegresamosLista(){
   return DatosCompletos;
}

private void LocalizarUltimo(){
    
  if (DatosCompletos!=null){
    while (DatosCompletos.anterior!=null)
        DatosCompletos=DatosCompletos.anterior;
  }    
}
 
private void LocalizarPrimero(){
    
  if (DatosCompletos!=null){
    while (DatosCompletos.siguiente!=null)
        DatosCompletos=DatosCompletos.siguiente;
  }    
}

public static void main(String[] args){

NodosEnlazados ResultadoLista;
List prueba = new ArrayList();

prueba.add("Marisol");
prueba.add("Yazmin");
prueba.add("Juan");
prueba.add("Alma");

ListaDobleEnlazada Cargamos = new ListaDobleEnlazada();
Cargamos.RecibeLista(prueba);
Cargamos.imprimir();
//ResultadoLista = Cargamos.RegresamosLista();
ResultadoLista = Cargamos.DatosCompletos;
 

if (ResultadoLista == null)
     System.out.println("tenermos un error de referencia...");
        
while (ResultadoLista != null){
     System.out.println("Existo con los datos "+ResultadoLista.dato);
     ResultadoLista=ResultadoLista.siguiente;
}
}
}

Capturen y compilen, de igual forma complementen lo que falta de los procesos, suerte