ESERCIZIO 1 Si supponga ad esempio di voler realizzare una

Transcript

ESERCIZIO 1 Si supponga ad esempio di voler realizzare una
ESERCIZIO 1
Si supponga ad esempio di voler realizzare una struttura collegata per rappresentare una sequenza di
caratteri – ad esempio A, B, …, Z
1. posso iniziare creando un nodo che rappresenti il primo elemento carattere A e quindi
aggiungere, via via, altri nodi in coda ai precedenti per rappresentare gli altri elementi della
sequenza
2. in alternativa potrei anche pensare – sbagliando ! – di iniziare creando un nodo che rappresenti
il primo elemento carattere A e quindi aggiungere, via via, altri nodi sempre in testa per
rappresentare gli altri elementi della sequenza
Nel caso 1 assumo di avere le seguenti classi già disponibili
class NodoLista {
public char info;
public NodoLista next;
public NodoLista() {next = null;}
}
public class ProvaLista {
public static NodoLista creaInCoda() {
NodoLista a = new NodoLista();
NodoLista p = a;
p.info = ‘A’;
p.next = new NodoLista();
p = p.next;
char c;
for (c = ‘B’; c < ‘Z’, c++) {
p.info = c;
p.next = new NodoLista();
p = p.next; }
p.info = ‘Z’;
p.next = null;
return a; }
}
Per il caso 2 assumo di avere anche la seguente classe già disponibile
public static NodoLista creaInTesta() {
NodoLista a = new NodoLista();
a.info = ‘A’;
a.next = null;
NodoLista p = a;
char c;
for (c = ‘B’; c <= ‘Z’, c++) {
NodoLista a = new NodoLista();
a.info = c;
a.next = p;
p = a; }
return p;
}
Per poter completare la soluzione del problema posto bisogna di scrivere un metodo per visualizzare
gli elementi di una data struttura collegata, cioè per la visualizzazione di tutti i valori della variabile
info di ciascun nodo, dal primo all’ultimo.
Si può assumere di avere anche questo metodo già disponibile
public static void stampa(NodoLista p) {
while (p.next !=null) {
System.out.println(p.info);
p = p.next;
}
System.out.println(p.info);
}
A questo punto posso provare la seguente applicazione di prova.
public class ProvaLista {
...
public static void main(String[] args){
NodoLista a = creaInCoda();
NodoLista b = creaInTesta();
stampa(a);
stampa(b);
}
}
ESERCIZIO 2
Scrivere il metodo necessario per costruire una struttura collegata per rappresentare una data
sequenza di caratteri disponibile come un array di caratteri.
Si suppone che il metodo abbia il seguente prototipo
NodoLista creaDaArray(char[] s)
Dove NodoLista è la classe già vista all’esercizio 1.
Per testare il metodo si può avere la seguente applicazione che usa il metodo stampa dell’esercizio 1
public class ProvaLista {
...
public static void main(String[] args){
char[] s = {‘A’, ‘B’, ‘C’, ‘D’}
NodoLista c = creaDaArray(s);
stampa(c);
}
}
ESERCIZIO 3
Scrivere il metodo necessario per costruire una struttura collegata per rappresentare una data
sequenza di caratteri disponibile come una stringa.
Si suppone che il metodo abbia il seguente prototipo
NodoLista creaDaStringa(String s)
Dove NodoLista è la classe già vista all’esercizio 1.
Per testare il metodo si può avere la seguente applicazione che usa il metodo stampa dell’esercizio 1
public class ProvaLista {
...
public static void main(String[] args){
String s = “ABCD”;
NodoLista c = creaDaStringa(s);
stampa(c);
}
}
ESERCIZIO 4
Data la seguente classe NodoLista per definire una struttura collegata di stringhe
class NodoLista {
public String info;
public NodoLista next;
public NodoLista() {next = null;}
}
scrivere un metodo ricorsivo, con prototipo
public static void stampaR(NodoLista p) {
per visualizzare, riga dopo riga, le stringhe di una struttura collegata di stringhe.
ESERCIZIO 5
Ripetere gli esercizi 1, 2 e 3 utilizzando il metodo stampaR, dell’esercizio 4, invece del metodo
iterativo stampa, facendo attenzione ad apportare le necessarie modifiche per tener conto della
tipologia di elementi delle diverse strutture collegate coinvolte nei vari esercizi.
ESERCIZIO 6
Scrivere i metodi necessari per costruire una struttura collegata per rappresentare una data sequenza
di stringhe con le seguenti caratteristiche :
- disponibile come un array di stringhe
- mantenendo l’ordine degli elementi dal primo all’ultimo
- invertendo l’ordine degli elementi dall’ultimo al primo
Scrivere un’applicazione di test utilizzando sia il metodo stampa sia il metodo stampaR.
Si suggerisce di tener conto dell’esercizio 2, apportando le necessarie modifiche