Professional Documents
Culture Documents
EJERCICIOS RESUELTOS
Ejercicio 1.- Aadir a la clase LEG un mtodo que inserte un nuevo elemento al final de la lista:
public void insertarEnFin(E x);
Ejercicio 3.- Escribir un mtodo toString() de LDEG que obtenga una representacin textual de los nodos de la lista en orden descendente, del ltimo al primero.
Solucin:
public String toStringDesc() { NodoLDEG<E> aux = primero; String res = ; if (aux != null) { // Lista no vaca while (aux.siguiente != null) aux = aux.siguiente; while (aux != null) { res += aux.dato.toString() + \n; aux = aux.anterior; } } return res; }
Solucin alternativa:
public String toStringDesc() { String res = ; for (NodoLDEG <E> aux = primero; aux != null; aux = aux.siguiente) res = aux.dato.toString() + \n + res; return res; }
Solucin:
public void insertarEnFin(E x) { NodoLDEG<E> aux = primero; if (aux == null) primero = new NodoLDEG<E>(x); else { while (aux.siguiente != null) aux = aux.siguiente; aux.siguiente = new NodoLDEG<E>(x, null, aux); } talla++; }
Ejercicio 5.- Es conveniente que LEGOrdenada sobrescriba el mtodo eliminar de LEG? En caso afirmativo, indquese por qu y realcense las modificaciones oportunas.
Solucin: S que debe sobrescribirlo, pues podemos mejorar la eficiencia cuando el elemento que vamos a eliminar, x, no se encuentra en la lista: cuando encontremos un elemento en la lista que sea mayor que x, no har falta continuar recorriendo la lista ya que todos los elementos siguientes tambin sern mayores que x.
public boolean eliminar(E x) { NodoLEG<E> aux = primero, ant = null; int res = -1; while (aux != null && res < 0) { res = aux.dato.compareTo(x); if (res < 0) { ant = aux; aux = aux.siguiente; } } if (aux == null || res > 0) return false; if (ant == null) primero = aux.siguiente; else ant.siguiente = aux.siguiente; talla--; return true; }
Ejercicio 6.- Disea el mtodo eliminarMayor(E x), que borra de la lista todos los elementos mayores que x, en las clases LEG y LEGOrdenada.
Ejercicio 7.- Escribe el mtodo E buscarMin() en la clase LEGCircular, que devuelve el menor elemento de la lista. Solucin:
public class LEGCircularDeComparables<E extends Comparable<E>> extends LEGCircular <E> { public E buscarMin() { if (ultimo == null) return null; NodoLEG<E> aux = ultimo; E min = aux.dato; do { aux = aux.siguiente; if (aux.dato.compareTo(min) < 0) min = aux.dato; } while (aux != ultimo); return min; } }
Ejercicio 8.- Escribe el mtodo E recuperar(int indice) en la clase LEG, que devuelve el elemento de la lista que ocupa dicha posicin. El mtodo deber lanzar la excepcin ElementoNoEncontrado si el ndice est fuera de rango. Solucin:
public E recuperar(int indice) throws ElementoNoEncontrado { if (indice < 0 || indice >= talla) throw new ElementoNoEncontrado(Indice +indice+ fuera de rango); NodoLEG<E> aux = primero; for (int i = 0; i < indice; i++) aux = aux.siguiente; return aux.dato; }