Está en la página 1de 9

AEDI I.T.

Informtica de Gestin Curso 09/10


Listas
Es una estructura lineal de cero o ms
elementos
Se representa como una sucesin de elementos
separados por comas: a
1
, a
2
,.., a
n-1
, a
n
donde
n0 y cada a
i
es un elemento de la lista.
Al nmero n de elementos se le llama longitud
de la lista.
Si n = 0, se tiene una lista vaca.
Generalizacin del TAD Pila y TAD Cola,
permite accesos, inserciones y borrados en
cualquier posicin.
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Especificacin
public class Lista

<E> {
// caractersticas:
// Es una secuencia de elementos en la que se puede insertar y suprimir en cualquier posicin
// Los objetos son modificables.
public Lista <E> ( )
// Produce: una lista vaca
public int

tamao()
// Produce: devuelve el nmero de elementos de la lista
public boolean

esVacio()
// Produce: cierto si la lista est

vaca. Falso en otro caso
public boolean

contiene (E elemento)
// Produce: cierto si la lista contiene el elemento especificado, falso en caso contrario
public E recuperar() throws ListaVaciaExcepcion
// Produce: si la lista est

vaca, lanza la excepcin ListaVaciaExcepcin,
//

en otro caso devuelve un elemento cualquiera de la lista
public void

insertar (E elemento);
// Modifica: this
// Produce:

aade un elemento al final de la secuencia
public boolean

suprimir (E elemento);
// Modifica: this
// Produce: cierto si elimina el una ocurrencia del elemento de la secuencia,
falso en caso contrario
AEDI I.T. Informtica de Gestin Curso 09/10
Uso del TAD Lista
Ejemplo de uso del TAD Lista
public static int sumar (Lista<Integer> lis){
int contador = 0;
while (! lis.esVacio()){
Integer i = lis.recuperar();
contador+=i;
lis.suprimir(i);
return contador;
}
Si se quiere recorrer la secuencia, sin usar ndices y sin
eliminarla, es necesario incorporar una operacin
iteradora.
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Especificacin
public class Lista

<E> extends Iterable<E>{
// caractersticas:
// Es una secuencia de elementos en la que se puede insertar y suprimir en cualquier posicin
// Los objetos son modificables.
public Lista <E> ( )
// Produce: una lista vaca
public int

tamao()
// Produce: devuelve el nmero de elementos de la lista
public boolean

esVacio()
// Produce: cierto si la lista est

vaca. Falso en otro caso
public boolean

contiene (E elemento)
// Produce: cierto si la lista contiene el elemento especificado, falso en caso contrario
public E recuperar() throws ListaVaciaExcepcion
// Produce: si la lista est

vaca, lanza la excepcin ListaVaciaExcepcin,
//

en otro caso devuelve un elemento cualquiera de la lista
public void

insertar (E elemento);
// Modifica: this
// Produce:

aade un elemento al final de la secuencia
public boolean

suprimir (E elemento);
// Modifica: this
// Produce: cierto si elimina el una ocurrencia del elemento de la secuencia,
falso en caso contrario
public interface Iterable<E>
public Iterator<E> iterator();
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista


Ejemplo de uso del TAD Lista
public static int sumar (Lista<Integer>lis){
int contador =0;
Iterator<Integer>itr =lis.iterator();
while (itr.hasNext())
contador+=itr.next();
return contador;
}
public static int sumar (Lista <Integer>lis){
int contador =0;
for (Integer i: lis)
contador+=i;
return contador;
}
public interface Iterator<E>
public E next();
public boolean hasNext();
public E remove();
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Problema: Iterador muy simple, solo permite avanzar
actual y recuperar en actual.
Si queremos incorporar ms operaciones sobre la
posicin actual de la lista en la que nos encontramos, por
ejemplo, insertar delante de actual, despus de actual,
retroceder actual, modificar el elemento actual, etc, hay
que extender o derivar el iterador, incorporando nuevas
operaciones.
public interface IteradorLista<E>extends Iterator<E>
En el TAD Lista se va a especificar una operacin
iteradorLista() que devuelve un iterador enriquecido
que permite la actualizacin de la secuencia.
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
public class Lista<E> extends Iterable<E>{
public Lista<E> ( )
// Produce: una lista vaca
public int tamao()
// Produce: devuelve el nmero de elementos de la lista
public boolean esVacio()
// Produce: cierto si la lista est vaca. Falso en otro caso
public boolean contiene (E elemento)
// Produce: cierto si la lista contiene el elemento especificado, falso en caso contrario
public E recuperar() throws ListaVaciaExcepcion
// Produce: si la lista est vaca, lanza la excepcin ListaVaciaExcepcin,
// en otro caso devuelve un elemento cualquiera de la lista
public void insertar (E elemento);
// Modifica: this
// Produce: aade un elemento al final de la secuencia
public boolean suprimir (E elemento);
// Modifica: this
// Produce: cierto si elimina el una ocurrencia del elemento de la secuencia,
// falso en caso contrario
public IteradorLista<E> iteradorLista();
// Necesita: this no debe modificarse mientras IteradorLista est en uso
// Produce: un iterador enriquecido sobre los elementos de this
}
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Los mtodos que se han incorporado en la clase
iteradora, a modo de ejemplo son: modificar actual e
insertar despus de actual:
public interface IteradorLista<E>extends Iterator<E>{
public void modificar (E elemento) throws NoSuchElementException;
//Modifica: this
//Produce: si actual no es de la secuencia lanza la excepcin NoSuchElementException,
// sino reemplaza el elemento situado en la posicin actual por elemento
public void insertarAntes (E elemento);
// Modifica: this
// Produce: elemento se inserta inmediatamente antes del elemento que sera devuelto por next.
Si la lista est vaca, el nuevo elemento es el nico elemento de la lista.
}
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
public interface Iterator<E>
public E next();
public boolean hasNext();
public E remove();
public interface Iterable<E>
public Iterator<E> iterator();
public interface Lista<E> extends Iterable<E> {
public boolean esVacio();
public int tamao();
public boolean contiene (E elemento);
public void insertar (E elemento);
public boolean suprimir (E elemento);
public IteradorLista<E> iteradorLista();
public interface IteradorLista<E> extends Iterator<E>{
public void modificar (E elemento);
public void insertarAntes (E elemento);
J
a
v
a
J
a
v
a

También podría gustarte