Sunteți pe pagina 1din 4

Pgina 1

UNIVERSIDAD
DE CANTABRIA
Examen de Estructuras de Datos y Algoritmos
(Ingeniera Informtica)
Septiembre 2010
Primera parte (50% nota del examen)
1) Las ventas anuales de los diferentes productos ofertados en un supermercado se registran
en objetos de la clase Vent asAnual esPr oduct o:
publ i c cl ass Vent asAnual esPr oduct o
i mpl ement s Compar abl e<Vent asAnual esPr oduct o> {
/ / at r i but os y ot r os mt odos no r el evant es par a el pr obl ema
/ ** Ret or na el nombr e del pr oduct o
*/
publ i c St r i ng pr oduct o( ) {. . . }
/ ** Ret or na el ao de l a vent a
*/
publ i c i nt ao( ) {. . . }
/ ** Ret or na l as uni dades vendi das ese ao
*/
publ i c i nt uni dadesVendi das( ) {. . . }
/ ** Compar a en base al ao ( or dena de menor a mayor )
*/
@Over r i de
publ i c i nt compar eTo( Vent asAnual esPr oduct o v) {. . . }
}
Se pide implementar el mtodo:
Map<St r i ng, I nt eger > vent asEnPer i odo(
Pr i or i t yQueue<Vent asAnual esPr oduct o> vent as,
i nt aoI ni , i nt aoFi n)
El mtodo recibe una cola de prioridad con las ventas de los diferentes productos a lo
largo de los aos y los aos de inicio y finalizacin del periodo en el que estamos
interesados. Retorna un mapa con las ventas de los productos en el periodo comprendido
entre el aoI ni y aoFi n (ambos inclusive). Las llaves del mapa sern los nombres de
los productos vendidos en el periodo indicado y los valores el nmero de unidades
vendidas de cada uno de esos productos en dicho periodo.
Tratar de que el mtodo sea lo ms eficiente posible.
Cual es la eficiencia del mtodo en el peor caso?
Pgina 2
UNIVERSIDAD
DE CANTABRIA
2) Se dispone de una clase Li br o que permite almacenar el ttulo y los diferentes temas
tratados en un libro:
publ i c cl ass Li br o {
/ / l os at r i but os son pbl i cos por si mpl i ci dad
/ / t t ul o del l i br o
publ i c St r i ng t t ul o;
/ / t emas que t r at a el l i br o
publ i c Set <St r i ng> t emas;
}
Se pide implementar la clase ndi ceTemt i co que permite agrupar los libros por
temas de forma que sea eficiente obtener la bibliografa que trata un determinado tema.
publ i c cl ass I ndi ceTemat i co {
pr i vat e Map<St r i ng, HashSet <Li br o>> ndi ce =
new HashMap<St r i ng, HashSet <Li br o>>( ) ;
/ **
* I nser t a un l i br o en el ndi ce aadi ndol o al Hashset
* de t odos l os t emas que t r at a
*/
publ i c voi d i nser t a( Li br o l i br o) {. . . }
/ **
* Ret or na un conj unt o con t odos l os l i br os que t r at an
* el t ema i ndi cado
*/
publ i c Set <Li br o> bi bl i ogr af aTema( St r i ng t ema) {. . . }
}
Indicar la eficiencia de los dos mtodos de la clase.
3) Escribir el pseudocdigo de un mtodo al que se le pasa un grafo que utiliza la interfaz
de grafos vista en clase y el contenido de un vrtice inicial. El mtodo debe retornar un
conjunto que contenga los contenidos de todos los vrtices alcanzables desde el vrtice
inicial (los vrtices alcanzables son aquellos para los que existe un camino desde el
vrtice inicial). La cabecera del mtodo ser:
mtodo <V,A> alcanzables(Grafo<V,A> g, V vInicial)
retorna Set<V>

Pgina 3
UNIVERSIDAD
DE CANTABRIA
Examen de Estructuras de Datos y Algoritmos
(Ingeniera Informtica)
Septiembre 2010
Segunda parte (50% nota del examen)
4) Se dispone de una implementacin de un rbol genealgico realizada con cursores. La
clase almacena un Ar r ayLi st de personas y cada persona tiene como atributos su
nombre, y cursores a su padre y su madre (cada cursor indica la casilla del Ar r ayLi st
donde se encuentra el padre o madre, respectivamente). Escribir un mtodo con la
cabecera que se indica abajo que retorne una lista de los hijos de una persona. Retornar
nul l si la persona no existe en el rbol genealgico.
import java.util.*;
public class ArbolGenealogico
{
// atributos del arbol genealgico
ArrayList<Persona> lista=new ArrayList<Persona> ();
// clase interna Persona
private static class Persona {
String nombre;
int padre;
int madre;
}
/**
* Retorna los hijos de la persona llamada nombre
*/
public List<String> hijos(String nombre) {...}
... resto de los mtodos

}
5) Escribir el pseudocdigo de un mtodo que permita en un rbol que sigue la interfaz de
los rboles vista en clase retornar un conjunto que contenga todos los elementos
almacenados en el rbol. La cabecera del mtodo ser:
mtodo <E> obtenerTodos (Arbol<E> a) retorna Set<E>
Pgina 4
UNIVERSIDAD
DE CANTABRIA
6) Se dispone de la clase Col aEnl azada (vista en clase) que implementa una cola usando
una lista enlazada simple. Los elementos se insertan por el final y se eliminan por el
principio. Se muestra parte de la implementacin abajo. Se pide implementar el mtodo
removeLast() que elimine el ltimo elemento de la cola. El mtodo tiene la cabecera
que se muestra abajo. el mtodo retorna el elemento borrado, o nul l si la cola est vaca.
Tambin se pide indicar la eficiencia de este mtodo.
public class ColaEnlazada<E> extends AbstractQueue<E>
{
// atributos de la cola
private Celda<E> principio,fin;
private int num;
// clase privada que define la celda
private static class Celda<E> {
E contenido;
Celda<E> siguiente;

Celda(E cont) {
contenido=cont;
}
}

public E removeLast() {...}
... resto de los mtodos
}

S-ar putea să vă placă și