Esercizi con LinkedList

 

 

1.      a. Scrivere un metodo static int dispari(LinkedList lista) che possa ricevere una LinkedList di oggetti Integer e conti il numero di valori dispari memorizzati nella lista. (Utilizzate il metodo int intValue() degli oggetti della classe Integer per convertire un oggetto Integer in un valore intero). Utilizzate il programma ProvaListe1.

 

b. Fornire una versione ricorsiva.

 

 

2.      Scrivere un metodo static List unici(List lista) che possa ricevere una List (implementata come ArrayList o LinkedList) di oggetti Integer e fornisca un’altra lista in cui non esistano duplicati. Utilizzate il programma ProvaListe2.

 

 

3.      Scrivere un metodo static void eliminaTutti(LinkedList lista, Integer i) che riceva una LinkedList di oggetti Integer e un oggetto Integer ed elimini dalla lista tutte le occorrenze dell’oggetto Integer ricevuto.  Utilizzate il programma ProvaListe3.

 

b. Fornire una versione ricorsiva.

 

 

4.      Scrivere un metodo static Integer vicinoMedia(LinkedList lista) che possa ricevere una LinkedList di oggetti Integer e restituisca l’oggetto Integer più vicino alla media degli interi. Utilizzate il programma ProvaListe4.

 

 

5.      Scrivere un metodo static void eliminaPari(LinkedList lista) che riceve una LinkedList di stringhe ed elimina le stringhe di lunghezza pari. Utilizzate il programma ProvaListe5.

 

b. Fornire una versione ricorsiva.

 

 

6. Nel sistema di gestione di una concessionaria un’automobile è descritta con il numero di telaio (stringa), la data di vendita (Calendar), il colore (String), il prezzo di vendita (double), e l’età dell’acquirente (int). Fornire una struttura dati per poter eseguire le seguenti operazione:

(a) Inserimento ed estrazione di un automobile venduta;

(b) Calcolo dell’età media di coloro che acquistano macchine di un certo colore;

(c) Calcolo del prezzo medio delle auto blu vendute in un determinato periodo di tempo.

 

 

7.      Una Pila è una lista LIFO (last-in-first-out) in cui gli inserimenti e le eliminazioni di oggetti si fanno sempre alla stessa estremità della lista, chiamata anche punta della pila.

Le operazioni di un tipo astratto di dato (ADT) Pila sono:

Pila crea()             (costruttore) crea una pila nuova

boolean eVuota()        verifica se la pila è vuota

inserisce(Object)       inserisce un nuovo oggetto nella pila

Object estrae()         estrae l’oggetto trovato nella punta della pila

Object punta()          restituisce l’oggetto trovato nell’elemento di

                        punta della pila, senza modificare la pila.

Utilizzare una LinkedList per implementare l’ADT Pila. Aggiungere poi una classe di oggetti iteratore che restituisca gli elementi della pila (senza distruggerla) nello stesso ordine in cui gli stessi sarebbero restituiti da successive invocazioni dell’operazione estrae(). Si assuma che la pila non venga modificata dal momento in cui un iteratore viene creato al momento in cui l’iteratore viene distrutto.

 

 

  1. Utilizzare una pila definita nell’esercizio 7 per implementare il metodo:

 

static LinkedList invertiLista(LinkedList lista)

 

che riceve una LinkedList e fornisce una LinkedList che ha gli stessi elementi della prima, in ordine inversa. Utilizzate il programma ProvaListe8.

 

9.        Scrivere un metodo statico verificaPariDispari (possibilmente ricorsivo) che, data una LinkedList (o un array) di Integer, restituisce la somma degli elementi con indice dispari meno la somma degli elementi con indice pari.

 

10.   Scrivere un metodo statico confrontaListe (possibilmente ricorsivo) che, date due LinkedList (o due array di Object), restituisce true se le due liste sono l'una il rovescio dell'altra, e false altrimenti.

 

11.   Scrivere un metodo statico maxPositiviConsecutivi (possibilmente ricorsivo) che, data una LinkedList (o un array) di Integer, restituisce la lunghezza della più lunga sottosequenza contenente solo valori positivi. Ad esempio, data la sequenza [3, 4, -2, 4, 7, 3, 6, -7, 2, -1, -5, 3, 4], maxPositiviConsecutivi dovrebbe restituire 4.