1. INSTITUTO UNIVERSITARIO DE TECNOLOGÍA
“ANTONIO JOSÉ DE SUCRE”
EXTENSIÓN MARACAY
Pilas
PROCESAMIENTO DE DATOS
PROF. NAUDY DEL VALLE ALBORNOZ
ALUMNO:
NOEL GALINDEZ
C.I. Nº V- 28.142.273
INFORMÁTICA
MARACAY, FEBRERO 2024
2. PILAS
Definición
Una pila es una estructura de datos lineal que sigue el principio de LIFO (Last
In, First Out) o FILO (First In, Last Out). Esto significa que el último elemento en
entrar es el primero en salir, o viceversa. Una pila es una colección ordenada de
elementos donde las inserciones y eliminaciones se realizan en un solo extremo,
llamado "cima" o "tope" de la pila.
Las pilas suelen emplearse en los siguientes contextos:
✓ Evaluación de expresiones en notación postfija (notación polaca inversa).
✓ Reconocedores sintácticos de lenguajes independientes del contexto.
✓ Implementación de recursividad.
✓ En un sistema operativo cada proceso tiene un espacio de memoria (pila) para
almacenar valores y llamadas a funciones.
Características
✓ La característica más importante de la pila es que el último elemento insertado
en ella es el primero en suprimirse.
✓ LIFO/FILO: Los elementos se eliminan en el orden inverso al que fueron
insertados.
✓ Operaciones Limitadas: Solo se pueden realizar operaciones en la cima de la
pila.
✓ Implementación Eficiente: Las operaciones de inserción y eliminación son
rápidas, típicamente con complejidad O(1).
Representación
La implementación más común de una pila es mediante una estructura de datos
basada en arrays o listas enlazadas.
3. Hay varias formas de representar una pila en C y cada una de ellas es sólo una
implementación del concepto introducido en la sección anterior. Aunque un arreglo no
es una pila, bien puede ser usado para representar una.
Las pilas pueden ser representadas en memoria con:
- Arreglos: Representar pilas usando arreglos es relativamente más sencillo que usando
listas enlazadas, el único problema que existe es la limitante de espacio en memoria,
ya que al definir un tamaño máximo ya no es posible insertar más elementos.
- Listas enlazadas: Son llamadas también estructuras dinámicas, ya que el espacio en
memoria se crea hasta que se inserta el elemento. Las listas enlazadas serán estudiadas
en el módulo 3.
Tratamiento de una Pila: Modo fifo, modo lifo. EJEMPLOS
- Modo FIFO (First In, First Out): Se elimina el elemento que ha estado en la pila
durante más tiempo.
- Modo LIFO (Last In, First Out): Se elimina el elemento más recientemente añadido
a la pila.
4. Ejemplos
Modo FIFO (First In, First Out):
En este modo, el primer elemento que se ingresa a la pila es el primero en ser eliminado.
5. Modo LIFO (Last In, First Out):
En este modo, el último elemento que se ingresa a la pila es el primero en ser eliminado.
En ambos ejemplos, se define una clase de pila con métodos para insertar (push)
y eliminar (pop) elementos. La diferencia radica en cómo se implementa el método
push: en FIFO se inserta en el índice 0 (al principio de la lista), mientras que en LIFO
se añade al final de la lista. Los métodos pop eliminan y devuelven el último elemento
de la lista, como es el comportamiento de una pila.
6. Operaciones a realizar con estructura de pila. EJEMPLOS
• Push: Inserta un elemento en la cima de la pila.
• Pop: Elimina el elemento en la cima de la pila.
• Top/Peek: Devuelve el elemento en la cima de la pila sin eliminarlo.
• Isempty: Verifica si la pila está vacía.
• Size: Devuelve el número de elementos en la pila.
Ejemplos de Operaciones:
7. Diseñar Algoritmos elementales para el tratamiento de pila.
✓ Reversión de una Lista: Utilizando una pila para invertir el orden de los
elementos de una lista.
✓ Evaluación de Expresiones Postfijas: Utilizando una pila para evaluar
expresiones matemáticas en notación postfija (o RPN, Reverse Polish
Notation).
8. ✓ Validación de Paréntesis: Utilizando una pila para verificar si los paréntesis
están correctamente balanceados en una expresión.
9. Estos son ejemplos básicos, pero las pilas se pueden usar en una amplia variedad
de aplicaciones, como manejo de llamadas de funciones en la memoria de programas,
navegación de historiales en navegadores web, etc. Las operaciones básicas y
algoritmos mencionados son fundamentales para comprender el funcionamiento de las
pilas y su aplicabilidad en diversos contextos.