Salve ragazzi, ho un problema,
sto risolvendo un problema che ho da svolgere in java. Ho una lista con alcuni elementi devo eliminare il primo elemento della lista e non so come fare.
Il metodo per eliminare l'elemento lo devo creare io ovviamente.
CODICE CLASSE MAIN:
CODICE CLASSE LIST DA IMPLEMENTAREcodice:public class MainDoubling { /** * @param args */ public static void main(String[] args) { Lista list = new ListDoubling(); System.out.println("Creazione di lista 1"); System.out.println("la lista inizialmente e' vuota: " + list.isEmpty()+ "\n"); //list.insert(null, list.firstList()); list.insert("b", list.firstList()); list.insert("c", list.firstList()); list.insert("d", list.firstList()); list.insert("e", list.firstList()); System.out.println("Stampo tutti gli elementi"); Posizione p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("inserisco f in seconda posizione \n"); list.insert("f", list.succ(list.firstList())); System.out.println("Stampo tutti gli elementi"); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("\n eliminazione elemento in prima posizione"); list.remove(list.firstList()); //punto in cui devo modificare il metodo remove dalla classe listdoubling. p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("\n eliminazione elemento in ultima posizione"); p = list.firstList(); Posizione q=null; while (!list.endList(p)) { q=p; p = list.succ(p); } list.remove(q); p = list.firstList(); while (!list.endList(p)) { if (list.readList(p) != null) System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("\n eliminazione elemento in posizione 3"); q = list.succ(list.succ(list.firstList())); list.remove(q); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("Inserimento elemento fine in coda"); list.insert("fine", p); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("\n"); System.out.println("inserimento elemento in posizione 4"); Posizione posizione4 = list.succ(list.succ(list.succ(list.firstList()))); list.insert("posizione 4", posizione4); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("inserimento elemento posizione predecessore di 4"); list.insert("posizione 3", list.pred(posizione4)); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } System.out.println("sovrascivo elemento posizione 4"); posizione4 = list.succ(list.succ(list.succ(list.firstList()))); list.insert("sovrascritto", posizione4); p = list.firstList(); while (!list.endList(p)) { System.out.println(list.readList(p)); p = list.succ(p); } } }
Spero in un vostro aiuto grazie in anticipo come semprecodice:public class ListDoubling implements Lista { private Object[] L = new Object[1]; private int n = 0; public boolean isEmpty(){return n == 0;} public boolean endList(Posizione p) { return ((Indice) p).indice == n; } public Posizione firstList() { return new Indice(); } public Posizione succ(Posizione p) { if (endList(p)) throw new IndexOutOfBoundsException(((Indice) p).indice + " e' ultima posizione della lista"); Posizione pos = new Indice(); ((Indice) pos).indice = ((Indice) p).indice + 1; return pos; } protected boolean checkPosition(Posizione p) { if (((Indice) p).indice < 0 || ((Indice) p).indice > n) return false; else return true; } public Object readList(Posizione p) { if (!checkPosition(p) && !endList(p)) throw new IndexOutOfBoundsException("posizione non valida"); return L[((Indice) p).indice]; } public void insert(Object e, Posizione p) { if (!checkPosition(p)) throw new IndexOutOfBoundsException("Posizione di inserimento non valida"); for (int i = n; i > ((Indice)p).indice; i--) L[i]=L[i-1]; L[((Indice) p).indice] = e; n++; if (n == L.length) { Object[] temp = new Object[2 * L.length]; for (Indice pos=(Indice) firstList(); !endList(pos); pos=(Indice) succ(pos)) temp[pos.indice] = L[pos.indice]; L = temp; } } /* * (non-Javadoc) * @see Lista#pred(Posizione) * se p coincide con la posizione del primo elemento della lista sollevo IndexOutOfBoundsException * altrimenti restituisco la posizione antecedente a p */ public Posizione pred(Posizione p) { // Da implementare } /* * (non-Javadoc) * @see Lista#remove(Posizione) * Se la posizione p non è valida sollevo una IndexOutOfBoundsException * altrimenti * 1. cancello l'elemento in posizione ((Indice)p).indice di L (usare shift a sinistra) * 2. decremento n * 3. eventualmente dimezzo L in accordo alla tecnica del raddoppiamento/dimezzamento */ public void remove(Posizione p) { // Da implementare if (!checkPosition(p)) throw new IndexOutOfBoundsException("Posizione di cancellazione non valida"); L[((Indice)p).indice] } /* * (non-Javadoc) * @see Lista#writeList(java.lang.Object, Posizione) * Se la posizione p non è valida sollevo una IndexOutOfBoundsException * altrimenti scrivo in posizione ((Indice)p).indice di L l'elemento e */ public void writeList(Object e, Posizione p) { // Da implementare } }



Rispondi quotando