/* File: pile.c */ /* Time-stamp: "2002-05-17 00:21:54 calvanes" */ /* Scopo: rappresentazione collegata delle pile */ /* Richiede di dichiarare il tipo degli elementi della pila */ /* typedef int TipoElemPila; */ /* definizione del tipo lista */ struct nodoLista { TipoElemPila info; struct nodoLista *next; }; typedef struct nodoLista NodoLista; typedef NodoLista *TipoLista; /* definizione del tipo pila */ typedef TipoLista TipoPila; /* inclusione delle operazioni sulle liste */ #include "liste.c" /* implementazione delle operazioni primitive sulle pile */ void InitPila(TipoPila *pp) /* Inizializza la pila *pp ponendo a NULL il puntatore all'elemento affiorante della pila. */ { InitLista(pp); } /* InitPila */ bool TestPilaVuota(TipoPila p) /* Restituisce TRUE se la pila p e` vuota, FALSE altrimenti. */ { return (TestListaVuota(p)); } /* TestPilaVuota */ void TopPila(TipoPila p, TipoElemPila *pv) /* Restituisce in *pv l'elemento affiorante della pila p, senza modificare la pila. */ { TestaLista(p, pv); } /* TopPila */ void Push(TipoPila *pp, TipoElemPila v) /* Inserisce l'elemento v in cima alla pila *pp. */ { InserisciTestaLista(pp, v); } /* Push */ void Pop(TipoPila *pp, TipoElemPila *pv) /* Elimina l'elemento affiorante della pila *pp, restituendone il valore in *pv. */ { TopPila(*pp, pv); CancellaPrimoLista(pp); } /* Pop */