codice:
Si realizzino due classi che implementino le interfacce Node e LinkedList (descritte
nella pagina seguente) e che siano in grado gestire un insieme attraverso l'uso di
una lista linkata semplice.
Si scriva in seguito un programma Java che, utilizzando la nuova classe per la
gestione di un insieme, prenda in input un file contenente una sequenza di terne,
del tipo (a,b,c), e scriva in un file di output la medesima sequenza in cui le terne
sono state riordinate, in senso non decrescente, in base al valore degli elementi
contenuti nelle terne (ordinare sul primo valore; in caso di valore uguale ordinare sul
secondo valore; in caso di uguaglianza dei primi due valori ordinare sul terzo
valore).
Input
Il file di input contiene una sequenza di terne. Ogni terna č del tipo (a,b,c), dove
a,b e c sono degli interi di due cifre compresi tra 00 e 99.
La prima riga del file di input contiene il numero di terne presenti nel file.
Output
Il file di output contiene la sequenza riordinata delle terne presenti nel file di input.
Ecco le interfacce (che secondo me hanno qualche errore)
codice:
public interface Node {
public Node getNext(); // ritorna il nodo successivo
public void setNext(); // setta il valore del next //un parametro glielo mettiamo?
public void setFirst(int i); // setta il primo val della terna
public void setSecond(int i); // setta il secondo val della terna
public void setThird(int i); // setta il terzo val della terna
public int getFirst(int i); // ritorna il primo val della terna //errore, non prende parametri
public int getSecond(int i); // rit. il secondo val della terna //errore, non prende parametri
public int getThird(int i); // ritorna il val della terna //non prende parametri!!!!!!
}
public interface LinkedList {
// ritorna true se la lista č vuota
public boolean isEmpty();
// ritorna true se node č la testa della lista
public boolean isHead(Node node);
// ritorna true se node č la coda della lista
public boolean isTail(Node node);
// aggiunge un nuovo elemento alla lista
public void add(Node node);
// ritorna l'elemento pił piccolo della lista
public void getMin(); //void????
// ritorna l'elemento pił grande della lista
public void getMax(); //void???
// ritorna la testa della lista
public Node getHead();
// ritorna la coda della lista
public Node getTail();
// ritorna la dimensione della lista
public long getSize();
}
Sorvolando sui miei commenti ironici dovuti alla pazienza, che penso sia in vacanza
Il mio problema č come interpretare alcune cose.
Intanto per il setNext() credo ci si possa passare semplicemente un Node. Ma per quanto riguarda i metodi getMin e getMax, a parte che non possono essere void, ma poi cosa si intende? min e max rispetto a che cosa?
Come faccio a determinare su nodi che contengono triplette un minimo o un massimo?
Mi sapreste dare un suggerimento su come fare un inserimento ordinato?
Il problema č che non ho un valore per ogni nodo, ma una terna...da ordinare facendo si che:
"le terne
sono state riordinate, in senso non decrescente, in base al valore degli elementi
contenuti nelle terne (ordinare sul primo valore; in caso di valore uguale ordinare sul
secondo valore; in caso di uguaglianza dei primi due valori ordinare sul terzo
valore)."