Esercizio sulle liste:
codice:Si realizzi una classe Java, denominata ListOfArray<E> che implementi l'interfaccia OrderedSet<E> (mostrata nella pagina seguente). La nuova classe ListOfArray<E> mantiene gli elementi dell'insieme all'interno di array di dimensione fissa pari a 100. Quando lo spazio allocato nella struttura non č pił sufficiente per contenere tutti gli elementi inseriti viene creato un nuovo array di dimensione 100 che permette di estendere lo spazio disponibile. Tutti gli array allocati nella struttura sono organizzati in una lista linkata semplice. Gli elementi sono memorizzati in ordine non decrescente. Si realizzi in seguito una classe che implementi l'interfaccia Person (mostrata nella pagine seguente) e si fornisca un programma Java che prenda in input un file contenente una lista di persone (specificate da nome, cognome ed etą) e restituisca in output la medesima lista ordinata in senso non decrescente secondo i campi cognome, nome ed etą. L'insieme deve essere gestito attraverso una classe ListOfArray<Person>. Input Il file di input contiene una sequenza di stringhe, una per riga, terminanti con il simbolo ; (punto e virgola). Ciascuna stringa contiene, in ordine, il nome il cognome e l'etą di una persona Output Il file di output contiene la medesima sequenza di stringhe del file di input ordinate in senso non decrescente, in base ai campi cognome, nome ed etą.Stavo lavorando sul metodo di inserimento, dato che l' interfaccia da implementare č OrderedSet immagino si debba fare un inserimento ordinato, e la cosa mi fa sclerare....sto provando ad implementare questo metodo ma sto sclerando.codice:public interface Person { public void setNome(String nome); // setta il nome della persona public void setCognome(String cognome); // setta il cognome della persona public void setAnni(int anni); // setta l'etą della persona public String getNome(); // ritorna il nome della perona public String getCognome(); // ritorna il cognome della persona public int getAnni(); // ritorna l'etą della persona public int compareTo(Person person); // ritorna un valore maggiore di 0 se la persona ha un valore pił grande di person; 0 se hanno due valori uguali; un intero minore di 0 altrimenti } public interface OrderedSet<E> { // ritorna true se l'insieme č vuoto public boolean isEmpty(); // ritorna il numero di elementi contenuti nell'insieme public int size(); // inserisce un nuovo elemento nell'insieme public void add(E element); // elimina il primo elemento di valore element public void remove(E element); // ritorna true se l'emento element č presente nell'insieme public boolean isPresent(E element); // ritorna l'elemento pił piccolo dell'insieme public E getFirst(); // ritorna l'elemento pił grande dell'insieme public E getLast(); // stampa la lista ordinata degli elementi dell'insieme public String toString(); }
E' complesso perchč ho un array in ogni nodo.
Dovrei prima verificare che l'array sia di 100, eventualmente estenderlo, se č stato gią esteso bisogna inserire un altro array nell'altro nodo, e spostare eventualmente gli elementi dall'array di un nodo a quello di un altro nodo... :master:

Rispondi quotando