Specifica e implementazione di OrderedList 2
public class OrderedList {
// OVERVIEW: `e una lista modificabile ordinata di oggetti di tipo Comparable
// Oggetto tipico [x1, . . . , xn] con xi < xj se i < j
// Il confronto fra gli elementi è effettuato con il loro metodo compareTo
private OrderedList left, right;
public void addEl (Comparable el) throws NullPointerException,
DuplicateException, ClassCastException
// EFFECTS: se el è in this, solleva DuplicateException; se el è null
// solleva NuIlPointerException; se el non è confrontabile con gli altri
// elementi in this solleva ClassCastException; altrimenti, aggiunge el a
{if (val == null) throw new NullPointerException("OrderedList.addEl”);
if (empty) { left = new OrderedList(); right = new OrderedList ();
val = el; empty = false; return; }
int n = el.compareTo(val);
if (n = 0) throw new DuplicateException("OrderedList.addEl");
if (n < 0) left.addEl(el); else right.addEl(el) ; }