Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: k1r4 on 27-03-2009, 21:03:19



Title: Lista linkata semplice - getNextElem e rewind
Post by: k1r4 on 27-03-2009, 21:03:19
Ho cercato di dare una soluzione al seguente esercizio sulle liste linkate semplici:

Quote
Definire ed implementare una classe lista che abbia i
seguenti metodi:
void rewind()
int getNextElem()

Il metodo getNextElem() scorre la lista e ad ogni
invocazione restituisce i vari nodi, in sequenza.
Al termine lancia un’eccezione.

Il metodo rewind() azzera l’esecuzione dello
scorrimento (fa ripartire dalla testa).

Apparte lanciare l'eccezione io li ho realizzati in questo modo:

Code:
public class LinkedList {

    private Node head;
    private Node current;

    // Altri metodi

    public Node getNextNode() {
        if (isEmpty()) {
            return null;
        } else {
            if(current != null) {
                current = current.getNext();
            } else {
                current = head;
            }
            return current;
        }
    }

    public void rewind() {
        current = null;
    }

ovvero ho creato un'altra variabile di istanza current che tiene traccia dell'attuale posizione all'interno della lista...

volevo sapere se esiste un modo migliore e più efficente


Title: Re:Lista linkata semplice - getNextElem e rewind
Post by: djjeck on 28-03-2009, 19:30:36
no, perfetto.

già che ci sono, però, ti faccio provare una cosa: prova ad implementare l'interfaccia Iterable.
è quella che si usa nei programmi veri di java, se la implementi poi puoi scorrere la tua struttura dati col foreach (non so se conosci la sintassi, funziona anche con gli array, in java>=1.6)
Code:
for(Object o : strutturadati)
  fai cose con o;


Title: Re:Lista linkata semplice - getNextElem e rewind
Post by: k1r4 on 29-03-2009, 09:54:49
grazie mille .smile