to get the file

Anuncio
Pregunta 3 (2 ptos)
Completar la clase Lista que implementa el TDA Lista (inmutable) de acuerdo a la especificación formal y métodos en
Java adjuntos. Todos los métodos deben ejecutarse en un tiempo O (1).
public class Lista {
private class Celda {
private Elemento elemento;
private Celda sig;
}
private Celda inicio;
...
} // fin class Lista
Pregunta 4 (2 ptos)
Completar la clase ListaUtil para listas pertenecientes al TDA Lista (inmutable) con la especificación formal y métodos
en Java adjuntos. El método ordena puede utilizar un método auxiliar para la inserción de un elemento en una lista
ordenada. Tanto el método ordena como su método auxiliar deben diseñarse recursivamente.
public class ListaUtil {
static public Lista ordena(Lista l) {
// Devuelve una lista con los elementos de l ordenados de menor a mayor
...
}
} // fin class ListaUtil
TDA Lista: Especificación Formal
Tipo Lista (Elemento)
Sintaxis
listavacia → Lista
inserta(Lista,Elemento) → Lista
vacia(Lista) → booleano
cabeza(Lista) → Elemento
resto(Lista) → Lista
Semántica ∀ L ∈ Lista, ∀ E ∈ Elemento
vacia(listavacia) ⇒ cierto
vacia(inserta(L,E)) ⇒ falso
cabeza(listavacia) ⇒ error
cabeza(inserta(L,E)) ⇒ E
resto(listavacia) ⇒ error
resto(inserta(L,E)) ⇒ L
Clase Lista
class Lista
Constructores
Lista()
Lista(Lista l, Elemento e)
Métodos
boolean vacia()
Elemento cabeza()
Lista resto()
Clase Elemento
class Elemento
Constructores
Elemento()
Métodos
int valor()
Resolución Examen (segunda parte)
Pregunta 3 (2 ptos)
public class Lista {
private class Celda {
private Elemento elemento;
private Celda sig;
}
private Celda inicio;
public Lista() { inicio = null; }
public Lista (Lista l, Elemento e) {
inicio = new Celda();
inicio.elemento = e;
inicio.sig = l.inicio;
}
public boolean vacia()
{ return (inicio==null); }
public Elemento cabeza() { return inicio.elemento; }
public Lista resto() {
Lista l = new Lista();
l.inicio = inicio.sig;
return l;
}
} // fin class Lista
Pregunta 4 (2 ptos)
public class ListaUtil {
static private Lista inserta_orden(Lista l, Elemento e) {
if (l.vacia()) return new Lista(new Lista(),e);
if (e.valor()<=l.cabeza().valor()) return new Lista(l,e);
return new Lista(inserta_orden(l.resto(),e),l.cabeza());
}
static public Lista ordena(Lista l) {
// Devuelve una lista con los elementos de l ordenados de menor a mayor
if (l.vacia()) return new Lista();
return inserta_orden(ordena(l.resto()),l.cabeza());
}
} // fin class ListaUtil
Descargar