Professional Documents
Culture Documents
___________________________________
DNI:
___________________________________
EJERCICIO 1 (5 puntos)
Se quiere implementar una clase de multiconjuntos que extienda la interfaz Set<E> y se estn barajando varias
opciones para el rea de datos.
Opcin 1: LinkedList<E> data;
Opcin 2: LinkedList<Pair<E,Integer>> data; //La clase Pair se da en el anexo
A. Explicar grficamente cmo sera la representacin, basada en cada una de los dos opciones, del siguiente
conjunto:
C={7,3,5,7,3,2,7,9,7}
B. Implementar las siguientes operaciones del multiconjunto. Para la OPCION1: size, add, y remove e
iterator. Para la OPCION2: size y add.
C. Indicar cul sera el coste temporal de las 6 operaciones implementadas en el apartado anterior.
D. Serviran las operaciones a nivel de conjunto (unin,) heredadas de la clase abstracta? Justificar la
respuesta para ambas opciones e indicar, si procede, los requisitos para que se pudiesen usar.
(NOTA: En el anexo se proporciona addAll como muestra)
EJERCICIO 2 (3 puntos)
Suponer que se ha implementado completamente un clase para multiconjuntos correspondiente a la opcin 1 del
apartado anterior y que la hemos llamado MultiSet<E>.
A. Explicar los pasos necesarios para implementar a partir de esta clase una nueva para multiconjuntos
ordenados: MultiOrderedSet<E> (slo explicar, no implementar).
B. Qu habra que hacer para que los mtodos de las operaciones entre conjuntos fuesen de coste lineal en
esta nueva clase.
C. Implementar el mtodo equals para MultiOrderedSet de manera que el coste sea lineal.
EJERCICIO 3 (2 puntos)
Se dispone de las siguientes representaciones grficas del rea de datos de varios tipos de diccionarios:
Opcin 1:
0
1
2
3
4
(Book,Libro) (Sky,Cielo) (House,Casa) (Door,Puerta) (Cloud,Nube)
Opcin 2:
(Book,Libro)
(Sky,Cielo)
(House,Casa)
(Door,Puerta
Opcin 3:
(House,Casa)
(Cloud,Nube)
(Book,Libro)
(Sky,Cielo)
(Door,Puerta
Dar un rea de datos en JAVA para cada una de las tres opciones anteriores.
(Nota: Para la opcin 3 no se puede usar la clase TreeSet ni la clase TreeMap)
(Cloud,Nube)
ANEXO
public interface Set<E> extends Collection<E>
{
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element);
boolean remove(Object element);
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear
// Array Operations
Object[] toArray();
<T> T[] toArray(T[] a);
}
SOLUCIONES
1.A. Rep. Grfica (0.8 puntos)
OPCION1:
OPCION2:
Size
O(1)
O(n)
add
O(1)
O(n)
remove
O(n)
-
iterator
O(1)
-
2.C. (1 punto)
Entry<K,V> root;
siendo los campos de Entry<K,V>:
K clave;
V valor;
Entry left;
Entry right;