#!/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[0]; } sub ins_pila { my($el, $pila); ($el, $pila) = @_; @$pila = ($el, @$pila); } sub est_pila { my($el, $pila); $pila = $_[0]; ($el, @$pila) = @$pila; return $el; } sub stampa { my($pila); $pila = $_[0]; my($x); print "["; foreach $x (@$pila) { print "$x,"; } 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);