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.