Fondamenti di Informatica I
Corso di Laurea in Ingegneria Informatica
Proff. Demetrescu, Iocchi, Nardi, Pirri
A.A. 2000/01
Seconda prova preliminare - Compito B
Durata: 60 minuti
Esercizio 1.
Si consideri la versione non funzionale della classe Pila il cui scheletro è riportato di seguito:
class Pila {
...
public Pila() { ... }
public void push(Object o) { ... }
public void pop() throws PilaException { ... }
public Object top() throws PilaException { ... }
}
1) Scrivere un metodo:
public static Pila creaPila(String[] s)
che restituisce una nuova pila contenente le stringhe contenute nell'array s in modo che l'elemento in cima alla pila sia uguale a s[0], quello immediatamente sotto sia uguale a s[1], ecc., come illustrato nel seguente esempio:
Si richiede di invocare solo metodi della classe Pila e di valutare la complessità del metodo creaPila in funzione della grandezza dell'array s. Si assuma che i costi delle invocazioni dei metodi della classe Pila siano costanti.
2) Scrivere un metodo:
public static Pila creaPilaSenzaDoppioni(String[] s)
che restituisce una nuova pila come nel caso precedente, ma in modo tale che nella pila non ci siano elementi uguali come illustrato nel seguente esempio:
Si richiede di invocare solo metodi della classe Pila e di valutare la complessità del metodo creaPilaSenzaDoppioni in funzione della grandezza dell'array s. Si assuma che i costi delle invocazioni dei metodi della classe Pila siano costanti.