FlipFlop ha scritto:
come si stampano gli elementi della pila?
Ci sono diverse questioni da valutare prima. Innanzitutto dipende da quale ordine ti serve per la stampa. Dato che la sequenza dei nodi è uni-direzionale e hai solo il "cima", se parti da cima e scorri i nodi con il "pros", l'ordine che potresti stampare è quello di uscita (quello che farebbe il pop(), in sostanza). Se vuoi il
contrario, ovvero partire dal
primo nodo pushato, allora vanno fatti altri ragionamenti, tra cui ad esempio rendere la sequenza bi-direzionale e tenersi anche il "fondo" (oltre che cima).
Ma c'è anche una questione più di "design" generale. Ora come ora hai fatto tutto quanto (compreso il main) dentro la stessa classe Stack. Significa che il "cima", pur essendo
private sarebbe perfettamente accessibile direttamente nel main avendo ovviamente il riferimento ad un oggetto Stack. Nel main
uno.cima sarebbe lecito.
In uno scenario più corretto/realistico, NON è così e non dovrebbe essere così. Il "cima" dovrebbe restare nascosto e non accessibile dall'esterno. Quindi la questione è cosa/quanto vuoi esporre all'esterno per poter fare una iterazione sui nodi ai fini di una stampa (o qualunque altra cosa possa servire).
Un conto sarebbe mettere in Stack un metodo es. stampa() che accede quindi internamente al cima e ai nodi facendo appunto solo la stampa. Un altro conto sarebbe se vuoi rendere scorribili i nodi dall'esterno della classe ma SENZA esporre cima/nodi, e in questo caso dovresti implementare il noto design pattern "Iterator".