Esta es la solución propuesta en clase. Como ejercicio para el Contrato de Aprendizaje, se sugiere definir la clase EjercicioBancoEnlazado en la cual en el main crear un objeto miBancoEnlazado de la clase BancoEnlazado, diferentes objetos de las clases CuentaCorriente y CuentaDeposito. Comprobad que los métodos insertarOrdenado y borrarCuentasCorrientesPobres funcionan correctamente. public abstract class Cuenta implements Comparable{ … protected Cuenta sig; public Cuenta(String nombreCliente,int numeroCuenta,double saldo) {…this.sig=null;} public Cuenta(String nombreCliente,int numeroCuenta,double saldo, Cuenta sig) {… this.sig=sig;} public int compareTo (Object o) { Cuenta c= (Object o); double dif = saldo – c.saldo; if (dif==0) return 0; else if (dif<0) return -1; else return 1; } … } public class CuentaCorriente extends Cuenta { … public CuentaCorriente(String nombreCliente,int numeroCuenta,double saldo,double limite) { super(nombreCliente,numeroCuenta,saldo); limiteEnRojo=limite; } public CuentaCorriente(String nombreCliente,int numeroCuenta,double saldo,double limite, Cuenta sig) { super(nombreCliente,numeroCuenta,saldo,sig); limiteEnRojo=limite; } … } public class CuentaDeposito extends Cuenta { public CuentaDeposito(String nombreCliente,int numeroCuenta,double saldo) { super(nombreCliente,numeroCuenta,saldo); } public CuentaDeposito(String nombreCliente,int numeroCuenta,double saldo, Cuenta sig) { super(nombreCliente,numeroCuenta,saldo,sig); } … } public class BancoEnlazado{ private int numCuentas; private Cuenta primeraCuenta; …. /* METODO PARA INSERTAR UNA CUENTA DE FORMA ORDENADA (de mayor a menor) */ public void insertarOrdenado (Cuenta x) { Cuenta aux = primeraCuenta; Cuenta ant = null; while ((aux != null) && (aux.compareTo(c) == 1) { ant = aux; aux = aux.sig; } if (ant == null) { /*inserción en la primera posición; equivalente a : if (aux == primeraCuenta) */ c.sig = primeraCuenta; primeraCuenta = c; } else { c.sig = aux; ant.sig=c; } numCuenta ++; } /*METODO QUE BORRA CUENTAS CORRIENTES (CC) POBRES*/ public void borrarCuentasCorrientesPobres (double min) { Cuenta aux = primeraCuenta; Cuenta ant = null; while (aux != null) /*con este bucle recorreremos toda la lista*/ { if ((aux.returnSaldo() < min) && (aux instanceOf CuentaCorriente)) { // cuenta corriente con saldo menor que min if (ant == null) // si en la primera posición primeraCuenta = aux.sig; else ant.sig = aux.sig; aux = aux.sig; numCuenta --; } else { ant =aux; aux = aux.sig; } } } } // clase BancoEnlazado