{ File: pile.pas } { Scopo: rappresentazione collegata di pile } { Prima di includere questo file si deve dichiarare il tipo degli elementi da inserire nella pila, mediante una dichiarazione type TipoElemPila = ...; } { dichiarazioni di tipo } type TipoElemLista = TipoElemPila; { gli elementi della lista sono dello stesso tipo degli elementi della pila } {$I TIPOLIS.PAS} { inclusione del file contenente la definizione del tipo TipoLista } TipoPila = TipoLista; { una pila e` rappresentata da una lista } {$I LISTE.PAS} { inclusione del file contenente l'implementazione delle operazioni primitive sulle liste } procedure InitPila (var p: TipoPila); { inizializza la pila p ponendo a NIL il puntatore all'elemento affiorante della pila } begin InitLista(p) end; { InitPila } function TestPilaVuota (p: TipoPila): boolean; { restituisce TRUE se la pila p e' vuota, FALSE altrimenti } begin TestPilaVuota := TestListaVuota(p) end; { TestPilaVuota } procedure TopPila (p: TipoPila; var v: TipoElemPila); { restituisce in v l'elemento affiorante della pila p, senza modificare la pila } begin TestaLista(p,v) end; { TopPila } procedure Push (var p: TipoPila; v: TipoElemPila); { inserisce l'elemento v in cima alla pila p } begin InserisciTestaLista(p,v) end; { Push } procedure Pop (var p: TipoPila; var v: TipoElemPila); { elimina l'elemento affiorante della pila p, restituendone il valore in v } begin TopPila(p,v); CancellaPrimoLista(p) end; { Pop }