Pilas en C++
Teoría.
Una pila es una estructura de datos homogénea (elementos del mismo tipo), secuencial y de tamaño variable. Sólo es
posible un modo de acceso a esta estructura: a través de la cabeza de la pila. De este modo podemos añadir un elemento a
la cabeza de la pila o extraer un elemento de la cabeza de la pila. Debido a que las operaciones de extracción e inserción se
realizan por el mismo extremo, el último elemento en ser añadido será el primero en ser extraído; por ello a estas estructuras
se las conoce con el nombre de LIFO (last-in, first-out; último en entrar, primero en salir).
C a b e z a
P i l a
I n s e r t a r E x t r a e r
Otras operaciones posibles sobre la pila son la creación de una pila vacía, la interrogación de la misma para determinar si
contiene o no algún elemento y la destrucción de la pila.
Para implementar una pila como una estructura dinámica de datos se usa una lista enlazada, las operaciones de extracción e
inserción en la lista (pila) se hacen siempre sobre la cabeza de la misma.
#ifndef _MPila_h_
#define _MPila_h_
#include "MCadena.h"
namespace MPila
{
using namespace MCadena;
typedef struct TNodo *TPila;
struct TNodo
{
TCadena val;
TPila sig;
};
typedef enum { NoError, ErrorPilaLLena,
ErrorPilaVacia} TError;
TPila CrearPila();
void DestruirPila(TPila &p);
void MeterPila(TPila &p, TCadena x, TError &error);
void SacarPila(TPila &p, TCadena &x, TError &error);
bool PilaLlena(TPila p);
bool PilaVacia(TPila p);
}
Laboratorio de Programación 1ºA E.T.S.I. Informática Gestión
José Luis Pastrana Brincones @ 2005