Listas Enlazadas Simples

public class EjecutarLista {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Lista lista = new Lista();
        
        lista.insertarFinal("ASignatura de Estruturas de Datos");
        lista.insertarFinal(13);
        lista.insertarFinal(true);
        
        System.out.println(lista);
        
        //        si quisieramos obtener el primer elemento de la lista
        //String  x = lista.obtener(0); 
        
        // Arreglo para obtener el primer elemento
        
        //String x = (String)lista.obtener(0);
        int x = (int)lista.obtener(1);
        System.out.println(x);
        
        

    }



public class Lista {

 private Object dato;
 private Lista sig;

 // Constructores
 public Lista() { // Crear una lista vacia
  dato = null;
  sig = null;
 }

 public Lista(Object d) { // crea una lista con un solo dato
  dato = d;
  sig = new Lista();
 }

 public Lista(Lista otra) { // crea una lista a partir de otra
  dato = otra.dato;
  sig = otra.sig;
 }

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

 public void insertarInicio(Object x) {
  sig = new Lista(this);
  dato = x;
 }

 public void insertar(Object x, int k) { // insertar un dato en la k-esima
           // posicion de la lista
  if (vacia() || k == 0)
   insertarInicio(x);
  else
   sig.insertar(x, k - 1);
 }

 public void insertarFinal(Object x) {
  if (vacia()) {
   dato = x;
   sig = new Lista();
  } else {
   sig.insertarFinal(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;
 }

 public int tamano() {
  if (vacia())
   return 0;
  return 1 + sig.tamano();
 }

 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 String toString() {
  String res = "[" + resto() + "]";
  return res;
 }

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

 public Object eliminar(int pos) {
  if (vacia())
   return null;
  if (pos == 0) {
   Object res = dato;
   dato = sig.dato;
   sig = sig.sig;
   return res;
  } else {
   return sig.eliminar(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);
  }
 }
}

0 Comentarios