Implementare una semplice classe STACK (pila: si veda ad esempio http://it.wikipedia.org/wiki/Stack), adatta a contenere caratteri. La classe dovra' implementare ALMENO i seguenti metodi (naturalmente, si preveda una struttura interna adeguata a supportare le funzionalita' richieste): - stack(int capacity), costruttore che riceve come input la capienza massima che dovra' caratterizzare lo stack. - boolean empty(), che restituisce TRUE se lo stack e' vuoto, FALSE altrimenti. - boolean full(), che restituisce TRUE se la capienza dello stack e' stata riempita, FALSE altrimenti. In pratica, se full() restituisce FALSE, e' ancora possibile inserire almeno un elemento. - boolean push(char elem), che inserisce un elemento in cima allo stack, e restituisce TRUE se l'inserimento e' andato a buon fine; restituisce FALSE altrimenti (nel caso in cui lo stack fosse gia' pieno). - char pop(), che restituisce l'elemento in cima allo stack, rimuovendolo dallo stack stesso. Se lo stack e' vuoto al momento dell'invocazione di pop(), allora questo dovra' restituire il carattere speciale "#" (sharp). - char peek(), che restituisce l'elemento in cima allo stack, SENZA pero' rimuoverlo (quindi lo stato dello stack dopo l'invocazione di peek() restera' invariato). Se lo stack e' vuoto al momento dell'invocazione di peek(), allora questo dovra' restituire il carattere speciale "#" (sharp). - boolean lookFor(char elem), che restituisce TRUE se l'elemento "elem" e' presente almeno una volta nello stack, FALSE altrimenti. - int search(char elem), [**OPZIONALE**] che restituisce la distanza tra la prima occorrenza dell'elemento "elem" e l'elemento in cima allo stack. La distanza e' "1-basata": cioe' se l'elemento cercato e' quello in cima allo stack, allora il metodo restituisce 1 (e non zero, come ci si aspetterebbe). Naturalmente, la ricerca deve essere effettuata dall'alto in basso (dal "top" verso il "bottom"). Se l'elemento "elem" non e' presente nello stack, il metodo deve restituire "-1". - int nElements(), [**OPZIONALE**] che restituisce il numero di elementi presenti sullo stack. - int capacity(), [**OPZIONALE**] che restituisce la capacita' massima dello stack. Si implementi poi un "main()" che legga da input una stringa, e ne stampi i caratteri che la compongono in ordine inverso, sfruttando la classe stack precedentemente definita. Si sfruttino poi le procedure fin qui ideate per verificare se la stringa inserita e' palindroma, e comunicarlo correttamente su standard output.