• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Implementare la PILA come struttura di dati generica adatta a trattare oggetti.

Mi.ke

Utente Master
Autore del topic
16 Giugno 2011
2.857
60
Miglior risposta
0

Implementare la pila come struttura di dati generica adatta a trattare qualunque tipo di oggetto.







La pila (stack) è una struttura di dati dinamica gestita usando la modalità Last-In First-Out. Ha la caratteristica che l'inserimento e l'estrazione di dati avvengono da un unica "estremità".​


Pila
Vector<Object>elementi
push() // inserisce elemento in cima
pop() // preleva un elemento eliminandolo dalla cima
top() // restituisce l'elemento in cima
size() // restituisce il n di elementi
empty() // restituisce true o false, se vuota o meno.

La classe Pila contiene un attributo privato in cui vengono memorizzati i dati. Questo attributo è un oggetto di classe Vector dichiarato nel seguente modo:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Il numero degli elementi nella pila viene controllato con il metodo size() e il valore viene memorizzato in una variabile intera chiamata size:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

L'operazione pop legge l'elemento che si trova in posizione size-1, lo cancella e lo restituisce.
La cosa importante da sottolineare in questa implementazione della classe Pila è il tipo di dato associato al singolo elemento che può essere aggiunto. I singoli elementi sono gestiti usando la classe Object. Questo significa che qualunque oggetto può essere aggiunto alla pila, in quanto la classe Object è la sopraclasse di qualsiasi altra classe.

Al momento di eseguire l'operazione push, viene automaticamente applicato il casting verso la classe Object. Quando viene preleavato un elemento, la pila lo restituisce come oggetto di classe Object: sarà compito di chi riceve l'oggetto convertirlo tramite un ulteriore casting verso la classe di origine.
Una pila realizzata in questo modo è una struttura di dati generica che può essere utilizzata più volte per trattare qualunque tipo di oggetto.

Il codice completo della classe Pila è il seguente:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se avete bisogno di chiarimenti, non esitate a chiedermeli, un saluto e alla prossima. :bye:
 
Interessante questa guida... io però avrei implementato lo stack usando i tipi generici (che mi pare avessi trattato in un'altra tua guida)
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
La tua implementazione è corretta, però metti di trovarti in questo caso
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
saresti costretto tutte le volte a "castare" il tipo ritornato dal pop
Però per il resto è tutto spiegato molto bene ;)