Per questa esercitazione è necessario utilizzare il package lab2,
in particolare la classe ArrayStack.
|
Risolvere i problemi elencati sotto NELL'ORDINE IN CUI SONO ELENCATI. Non si richiede di scrivere TUTTI i programmi, ma quelli risolti devono compilare correttamente e produrre i risultati richiesti. Alla fine dell'esercitazione, copiare tutti i file prodotti in una cartella identificata dai cognomi dei componenti del gruppo, sotto serverPu/Esercizi/Lez1004. Siete invitati a completare (alcuni de)gli esercizi
fuori dall'orario di esercitazione, soprattutto se avete trovato serie
difficoltà a svolgerli. Potete mandare l'eventuale completamento
all'indirizzo guerrini@disi.unige.it.
|
Esercizio 1
Si definisca una classe con la seguente
struttura
public class Clone {
/** * Crea una copia della pila passata come parametro * @return la copia della pila */ public static Stack clone( Stack daClonare ) { // DA DEFINIRE } } |
dove il metodo clone non deve alterare la pila originale.
Esercizio 2
Si consideri la seguente
interfaccia
import lab2.*;
public interface RevStack
extends
Stack
{
|
dove il metodo introdotto rovescia il contenuto di una pila, senza alterare la pila originale. Si definisca una classe ArrayRevStack, che estende ArrayStack e implementa l'interfaccia.
Esercizio 3
Si consideri la seguente
interfaccia
public interface
SwapStack
extends
Stack{
/** *Scambia il contenuto dei primi due elementi della pila *@return una nuova pila, che contiene i valori della pila *che esegue il metodo, con i primi due elementi scambiati */ Stackswap ( ) ; } |
dove il metodo introdotto scambia il contenuto dei primi
due elementi di una pila, senza alterare la pila originale, sollevando
l'eccezione EmptyStackException nel caso la
pila contenga meno di due elementi.
Si definisca una classe ArraySwapStack,
che estende ArrayStack e implementa l'interfaccia
SwapStack.
Esercizio 4
Si scriva una classe RemoveStack
contentente il metodo statico remove:
import lab2.*;
class RemoveStack { |
Il metodo remove toglie della pila ricevuta in input tutte le
occorrenze dell'oggetto o, restituendo il numero di elementi
cancellati. Il metodo deve alterare la pila ricevuta in input.
Per testare
la classe RemoveStack, si compili ed esegua la classe UseRemoveStack.
L'output deve essere ESATTAMENTE il seguente:
Stato della pila prima di 'remove 5': 7 6 5 4 3 2 1 7 6 5 4 3 2 1 Numero occorrenze trovate:2 Stato della pila dopo di 'remove 5': 7 6 4 3 2 1 7 6 4 3 2 1 Stato della pila prima di 'remove 12': |
ALTRI ESERCIZI SULL'USO DELLE PILE: