jueves, 8 de diciembre de 2011

Implementacion de una lista simple enlazada.


Tal vez le interese leer también sobre pilas y colas
Definición auspiciada por Wikipedia: una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia denodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.




Generalmente se usa una lista enlazada cuando no sabemos de antemano en numero de datos u objetos que queremos almacenar; personalmente uso en estos caso como lista un ArrayList.
Humildemente implemento en tres clases una lista sin hace uso de ninguna librería especificada por la sentencia import; espero les guste y les sirva.

//Autor: Rey Salcedo
 public class Nodo{

 private Object dato;
 private Nodo nodo;
 
 public Nodo(){
  dato = null;
  Nodo nodo = null;
 }
 public Nodo(Object dato){
  this();
  this.dato = dato;  
 }
 public void setDato(Object dato){
  this.dato = dato;
 }
 
 public Object getDato(){
  return dato;
 }
 
 public void setNodo(Nodo nodo){
  this.nodo = nodo;
 }
 
 public Nodo getNodo(){
  return nodo;
 } 
}


//Autor: Rey Salcedo
 public class Lista{
 private Nodo cabecera;
 private int tamaño;
 
 public Lista(){
  tamaño = 0;
  cabecera = new Nodo();
 }
 
 public int getTamaño(){
  return tamaño;
 }
 
 public boolean addDato(Object dato){
  Nodo nodoUltimo = getUltimoNodo();
  if(dato != null && nodoUltimo != null){
   nodoUltimo.setNodo(new Nodo(dato));
   tamaño ++;
   return true;
  }else{
   return false;
  }
 }
 
 private Nodo getUltimoNodo(){
  Nodo nodoUltimo = null;
  if(cabecera != null){
   nodoUltimo = cabecera;
   while(nodoUltimo.getNodo() != null){
    nodoUltimo = nodoUltimo.getNodo();
   }
  }
  return nodoUltimo;
 } 
 
 public Object getDato(int pos){
  Nodo nodoUltimo = null;
  int contador = 0;
  Object dato = null;
  if(cabecera != null){
   nodoUltimo = cabecera;
   do{
    nodoUltimo = nodoUltimo.getNodo();
    if(contador == pos){
     dato = nodoUltimo.getDato();
     break;
    }else{
     contador++;
    }   
   }while(nodoUltimo.getNodo() != null);
  }
  return dato;
 }
}


//Autor: Rey Salcedo
 public class Main{
 public static void main(String []args){
  Lista lista = new Lista();
  
  //Adjuntando datos
  lista.addDato("Hola");
  lista.addDato("mundo");
  lista.addDato("aqui");
  lista.addDato("estoy");
  
  System.out.println("-------Imprimiendo datos-------");
  
  for(int i = 0;i < lista.getTamaño();i ++){
   System.out.println(lista.getDato(i));
  }
 }
}

Tal vez también te interese: Implementacion de pila y cola.

1 comentario:

Entrada destacada

Matriz de adyacencia para un grafo

"La matriz de adyacencia es una matriz cuadrada que se utiliza como una forma de representar relaciones binarias."; aunque pa...