Académique Documents
Professionnel Documents
Culture Documents
-Implementacin a travs de
Nodos Simplemente Enlazados -Comparacin de las implementaciones -Mejoras
ADT LISTA
Coleccin de datos, con las siguientes caractersticas: -Por lo general los datos son de un mismo tipo. -Cada elemento tiene asociado un ndice posicin, a travs del cual se puede acceder y que lo identifica de manera nica en la coleccin. a0 a1 a2 a3 ... aN-1 Esto quiere decir que los elementos en una lista se encuentran organizados de una manera lineal e identificados a travs de una posicin. No se especifica cmo estn organizados fsicamente en la memoria.
-Los elementos de la lista sern de tipo Object -La operacin de Crear la har el constructor de la clase que implementa TLista -La operacin Destruir no es necesaria ya que la realiza el sistema automtico de recoleccin de basura del Java
Constructor:
public TListaP() { L=null; }
Cantidad y Vaca
public int Cantidad() public boolean Vacia() { { int cantidad; return L == null; TNodoSEP aux; } cantidad=0; aux = L; while( aux != null ) { cantidad++; aux = aux.prox; } return (cantidad); }
Adicionar
public void Adicionar(Object dato) { TNodoSEP nuevo, aux; nuevo = new TNodoSEP(); nuevo.elem = dato; nuevo.prox = null; if ( L != null ) { aux = L; while( aux.prox != null ) aux = aux.prox; aux.prox = nuevo; } else L = nuevo; }
Insertar
public void Insertar(Object dato, int pos) { TNodoSEP nuevo, aux; int i; nuevo = new TNodoSEP(); nuevo.elem = dato; if( pos <= 0 ) { nuevo.prox = L; L = nuevo; } else { aux = L; for( i=0; i < pos-1 && aux != null; i++) aux=aux.prox; if ( aux != null ) { nuevo.prox = aux.prox; aux.prox = nuevo; } } }
Eliminar
public void Eliminar(int pos) { TNodoSEP elim, aux; int i; if( L != null ) { if ( pos <= 0 ) L = L.prox; else { aux = L; for(i=0; i < pos-1 && aux != null; i++) aux = aux.prox; if ( aux != null && aux.prox != null ) { elim = aux.prox; aux.prox = elim.prox; } } } }
public Object Obtener(int pos) { TNodoSEP aux; int i; aux = L; for( i=0; i < pos && aux != null; i++ ) aux = aux.prox; if ( aux != null ) return aux.elem; else return null; } public void Modificar(Object dato, int pos) { TNodoSEP aux; int i; aux = L; for( i=0; i < pos && aux != null; i++ ) aux = aux.prox; if ( aux != null ) aux.elem = dato; }
public int Buscar(Object dato) { TNodoSEP aux; int encontrado = -1; aux = L; for( int i=0; aux != null && encontrado == -1 ; i++ ) { if ( aux.elem.equals( dato ) ) encontrado = i; else aux = aux.prox; } return encontrado; }
public int Buscar(Object dato, TComparar cmp) { . . . if ( cmp.Compara(aux.elem, dato ) == 0 . . . }
Desventajas de la implementacin mediante nodos simplemente enlazados : -La implementacin es mas compleja, requiere mayor esfuerzo por parte del programador para poder mantener la relacin de posicin entre los elementos (a travs de los enlaces). -El acceso a los elementos es secuencial. El costo es alto y directamente proporcional a la posicin del elemento que se accede. La operacin requiere que se recorra la lista desde el principio para acceder a cualquier elemento ya que la nica manera de llegar a un elemento es siguiendo los enlaces desde inicio de la lista.
elem prox
L
null cantidad = 3
F
null
Ejercicios propuestos
Implementar las clases: