Listas ordenadas Implementación

Anuncio
Listas ordenadas
Implementación
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Esquema general
_primero
12
_resto
3
5
-7
Estructuras de Datos y de la Información
17
ESI – Curso 2010/2011
Esquema general
_primero
12
_resto
3
_primero
-7
5
-7
17
_resto
3
Estructuras de Datos y de la Información
5
12
17
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public ListaOrdenada () {
super();
}
public ListaOrdenada (E e) {
this(e, new ListaOrdenada<E>());
}
public ListaOrdenada (E e, ListaOrdenada<E> l) {
super(e, l);
eliminarPrimero();
insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public ListaOrdenada () {
super();
}
public ListaOrdenada (E e) {
this(e, new ListaOrdenada<E>());
}
public ListaOrdenada (E e, ListaOrdenada<E> l) {
super(e, l);
eliminarPrimero(); // Para ordenar el primero.
insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void insertar (E e)
throws NullPointerException {
if (e == null)
throw new NullPointerException();
}
insertarOrdenado(e);
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public void insertarOrdenado (E e) throws NullPointerException {
if (e == null)
throw new NullPointerException();
if (esVacia()) {
_primero = e;
_resto = new ListaOrdenada<E>();
}
else
if (_primero.compareTo(e) > 0) {
_resto = new ListaOrdenada<E>(_primero,
(ListaOrdenada<E>)_resto);
_primero = e;
}
else
this.resto().insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public void insertarOrdenado (E e) throws NullPointerException {
if (e == null)
throw new NullPointerException();
if (esVacia()) {
_primero = e;
_resto = new ListaOrdenada<E>();
}
else
if (_primero.compareTo(e) > 0) {
_resto = new ListaOrdenada<E>(_primero,
(ListaOrdenada<E>)_resto);
_primero = e;
}
else
this.resto().insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public void insertarOrdenado (E e) throws NullPointerException {
if (e == null)
throw new NullPointerException();
if (esVacia()) {
Caso base
_primero = e;
e < _primero
_resto = new ListaOrdenada<E>();
}
else
if (_primero.compareTo(e) > 0) {
_resto = new ListaOrdenada<E>(_primero,
(ListaOrdenada<E>)_resto);
_primero = e;
}
else
this.resto().insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
public void insertarOrdenado (E e) throws NullPointerException {
if (e == null)
throw new NullPointerException();
if (esVacia()) {
_primero = e;
Caso recursivo
_resto = new ListaOrdenada<E>();
}
else
if (_primero.compareTo(e) > 0) {
_resto = new ListaOrdenada<E>(_primero,
(ListaOrdenada<E>)_resto);
_primero = e;
}
else
this.resto().insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void insertarN (int pos, E e)
throws IndiceFueraDeRangoException,
NullPointerException {
if ((pos <= 0) || (pos - 1 > tamanyo()))
throw new IndiceFueraDeRangoException();
else
insertarOrdenado(e);
}
@Override public void insertarFinal (E e)
throws NullPointerException {
insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void insertarN (int pos, E e)
throws IndiceFueraDeRangoException,
NullPointerException {
if ((pos <= 0) || (pos - 1 > tamanyo()))
throw new IndiceFueraDeRangoException();
else
insertarOrdenado(e);
}
@Override public void insertarFinal (E e)
throws NullPointerException {
insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void modificarN (int pos, E e)
throws IndiceFueraDeRangoException,
NullPointerException {
super.eliminarN(pos);
insertarOrdenado(e);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public boolean pertenece (E e) {
return (posicion(e) > 0);
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void concatenar
(ListaRecursiva<E> lista)
throws ListaVaciaException {
if (!lista.esVacia()) {
insertarOrdenado(lista.primero());
concatenar(lista._resto);
}
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Implementación :: ListaOrdenada
public class ListaOrdenada<E extends Comparable>
extends ListaRecursiva<E> {
@Override public void concatenar
(ListaRecursiva<E> lista)
throws ListaVaciaException {
if (!lista.esVacia()) {
insertarOrdenado(lista.primero());
concatenar(lista._resto);
}
}
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Problema :: Enunciado
●
Una comunidad está compuesta de una serie
de provincias, que a su vez están compuestas
de un número de localidades. Cada localidad
tiene un determinando número de habitantes
empadronados en la misma.
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Problema :: Requisitos
●
Usar las estructuras de datos adecuadas para:
–
Indicar las localidades de una provincia o
comunidad, ordenadas alfabéticamente, que
tienen más de n habitantes.
–
Listar, alfabéticamente, los habitantes cuya
edad se encuentra dentro un determinado
rango.
–
Generar un recuento de la población, por
localidad, provincia y comunidad.
–
Detectar a aquellos habitantes que cambian
de domicilio.
Estructuras de Datos y de la Información
ESI – Curso 2010/2011
Descargar