PILAS
PAGINA
2
Pág. 4 “Es una estructra de tipo LIFO (Last In First Out), es decir, último en entrar, primero en salir”.
O
Pilas
P Pág 5
E R
Pág 6—7 Cuando se conoce exactamente el num de elementos a apilar es recomendable el uso de arrays.
CREAR, APILAR, DESAPILAR, PILA VACIA, PILA LLENA, CIMA.
A C I O N
Implementación
Edición & Diseño Editor: Angélica García, Fabianna Molinares. Diseño: Angélica García, Fabianna Molinares. Universidad Fermín Toro, Cabudare, Venezuela.
E S
VOLUMEN
I
PAGINA
3
PAGINA
4
Pilas Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura .
El método de pila para la evaluación de expresiones fue propuesto en 1955 y dos años después patentado por Fiedrich L.Bauer, quién recibió en 1988 el premio "IEEE Computer Society Pioneer Award" por su trabajo en el desarrollo de dicha estructura de datos.
VOLUMEN
I
PAGINA
Operaciones con Pilas Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual y son Crear: se crea la pila vacía. Apilar: se añade un elemento a la pila (push). Desapilar: se elimina el elemento frontal de la pila (pop). Cima: devuelve el elemento que esta en la cima de la pila (top o peek). Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.
En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stacken inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.
5
PAGINA
6
Implementación de Pilas En este apartado se hablará de la implementación de una pila mediante un array. Esta implementación es estática, es decir, da un tamaño máximo fijo a la pila, y si se sobrepasa dicho límite se produce un error. A continuación se darán ejemplos de pequeños procedimientos que debe llevar una pila para su funcionamiento
Declaración: struct tpila , int cima; int elementos*MAX_PILA+; -; Nota: MAX_PILA debe ser mayor o igual que 1. Procedimiento de Creación: void crear(struct tpila *pila) , pila->cima = -1; Función que devuelve verdadero si la pila está vacía: int vacia(struct tpila *pila) , return (pila->cima == -1); -
VOLUMEN
I
PAGINA
Implementaci贸n de Pilas Procedimiento de apilado: void apilar(struct tpila *pila, int elem) , pila->elementos*++pila>cima+ = elem; Procedimiento de desapilado: void desapilar(struct tpila *pila, int *elem) , *elem = pila->elementos *pila->cima--+; Programa de prueba: #include <stdio.h> int main(void) , struct tpila pila; int elem; crear(&pila); if (vacia(&pila)) printf
("\nPila vacia."); if (llena(&pila)) printf ("\nPila llena."); apilar(&pila, 1); desapilar(&pila, &elem); return 0; -
7
NOTA IMPORTANTE: El uso del array es idóneo cuando se conoce de antemano el número máximo de elementos que van a ser apilados y el compilador admite una región contigua de memoria para el array. En otro caso sería más recomendable usar la implementación por listas enlazadas, también si el número de elementos llegase a ser excesivamente grande.