|
|
Universidad Carlos III de Madrid - Departamento de Ingeniería Telemática |
|
| Localización | Personal | Docencia | Investigación | Novedades | Intranet |
|
Datos de la práctica
Enlaces
|
Contenidos |
Este ejericio parte del código de la práctica de Colas (práctica 9). Descarga los siguientes ficheros:
Debes programar el siguiente método de la clase ColaEnlazada:
public boolean existeReferencia(Object referencia) {
(...)
}
Este método debe recorrer la cola desde top hasta el final buscando si alguno de los nodos contiene un objeto con la misma referencia que la que pasamos a través del argumento de entrada referencia.
Puedes probar este apartado ejecutando en un terminal la clase de pruebas proporcionada, con argumento de línea de comandos "1":
$ java PruebaColaEnlazada 1
Esta es la cola sobre la que buscaremos
top---> [a]<--[b]<--[c]<--[d] <---bottom
Existe un Nodo que contiene d? (Correcto SI) : tu programa dice que... Si
Existe un Nodo que contiene f? (Correcto NO) : tu programa dice que... No
Existe un Nodo que contiene a? (Correcto SI) : tu programa dice que... Si
Se utilizará la cola para guardar las canciones a grabar en un disco. La clase Disco utiliza internamente una cola para almacenar objetos de la clase Cancion. Programa el método siguiente, que determina la diferencia entre el tiempo máximo de música que cabe en el disco (se recibe como parámetro) y la suma de tiempos de las canciones de la cola:
public int comprobarTiempo(int tiempoMaximo) {
(...)
}
Este método recibe el tiempo máximo grabable en el CD y extrae las canciones de la lista de canciones, a la vez que suma sus duraciones. Posteriormente resta esta cantidad del tiempo máximo. Devuelve la diferencia.
Puedes probar este apartado ejecutando en un terminal la clase de pruebas proporcionada, con argumento de línea de comandos "2":
$ java PruebaColaEnlazada 2
top---> [Enter sadman:248s]<--[ONE:321s]<--[Master of puppets:233s]<--[Stone cold crazy:128s]<--[Seek and destroy:289s] <---bottom
Entra en el CD, sobra 2781s
añadimos una cancion larga... a ver si entra ahora
top---> [Enter sadman:248s]<--[ONE:321s]<--[Master of puppets:233s]<--[Stone cold crazy:128s]<--[Seek and destroy:289s]<--[Concierto entero. Unplugged in NY:3000s] <---bottom
No entra en el CD, resultado -219s
Programa un método en la clase ColaEnlazada que elimine un elemento de cada dos de la cola. Debe eliminar el segundo elemento, el cuarto, el sexto, y así sucesivamente con todos los elementos de posición par.
public void eliminarUnoDeCadaDos() {
(...)
}
Recuerda que la referencia a bottom debe actualizarse convenientemente si se elimina el elemento que hasta entonces fuese el último.
Puedes probar este apartado ejecutando en un terminal la clase de pruebas proporcionada, con argumento de línea de comandos "3":
java PruebaColaEnlazada 3
Cola inicial:
top---> [a]<--[b]<--[c]<--[d] <---bottom
Después de eliminar uno de cada dos:
top---> [a]<--[c] <---bottom
Bottom: c
Después de insertar "d" y eliminar uno de cada dos:
top---> [a]<--[d] <---bottom
Bottom: d