//package Sort; public class OrderedList { private static int dimensioneIniziale = 20; //la dimensione iniziale della lista private int[] lista; private int nOggetti; public OrderedList() { lista = new int[dimensioneIniziale]; nOggetti = 0; } public OrderedList(int n) throws IllegalArgumentException { if (n>0) { lista = new int[n]; nOggetti = 0; } else throw new IllegalArgumentException(); } public boolean isEmpty() { return nOggetti == 0; } public int length() { //la variabile d'ausilio fa risparmiare un bel tempo return nOggetti; } /** * remove(int k) cancella l'elemento con valore k, se esiste; nulla altrimenti */ public void remove(int k) { for (int i = 0; i < nOggetti; i++) { if (lista[i] == k) { nOggetti--; for (; i < nOggetti; i++) lista[i] = lista[i+1]; } } } public int get(int k) throws IllegalArgumentException { // 0<=k=nOggetti) throw new IllegalArgumentException(); else return lista[k]; } /** * add(int k) inserisce il valore k nella lista in modo ordinato */ public void add(int k) { int i = 0; if (nOggetti+1 <= lista.length) { //c'e' ancora spazio i = nOggetti; while ( i > 0 && lista[i-1] > k ) { lista[i] = lista[i-1]; i--; } lista[i] = k; nOggetti++; } else {//è necessario aumentare la dimensione dell'array int[] listaNuova = new int[lista.length + dimensioneIniziale]; i = 0; while (i < nOggetti && lista[i] < k) {//copio tutti gli elementi prima di k listaNuova[i] = lista[i]; i++; } listaNuova[i] = k; //inserisco il nuovo elemento in posizione k for (; i < nOggetti; i++)//copio tutti gli altri elementi dopo k listaNuova[i+1] = lista[i]; nOggetti++; lista = listaNuova; } } }//fine classe