#!/usr/bin/perl -w # Una possibile implementazione del tipo # di dato astratto pila use strict; sub nuova_pila { return []; } sub pila_vuota { my($pila); $pila = $_[0]; return !(@$pila); } sub testa_pila { my($pila); $pila = $_[0]; return @$pila[@$pila - 1]; } sub ins_pila { my($el, $pila); ($el, $pila) = @_; @$pila = (@$pila, $el); # push(@$pila, $el); } sub est_pila { my($el, $pila); $pila = $_[0]; $el = pop(@$pila); return $el; } sub stampa { my($pila); $pila = $_[0]; my($i); print "["; for ($i = @$pila - 1; $i >= 0; $i--) { print "@$pila[$i],"; } print "]\n"; } my($mypila); $mypila = nuova_pila(); print "Coda: "; stampa($mypila); if (pila_vuota($mypila)) { print "La pila e' vuota!\n"; } else { print "La pila non e' vuota\n"; } ins_pila(5, $mypila); print "Coda: "; stampa($mypila); if (pila_vuota($mypila)) { print "La pila e' vuota!\n"; } else { print "La pila non e' vuota\n"; } ins_pila(4, $mypila); print "Coda: "; stampa($mypila); my($elemento); $elemento = est_pila($mypila); print "Elemento estratto: $elemento\n"; print "Coda: "; stampa($mypila);