Una Pila (Stack) es una estructura lineal que sigue el principio LIFO (Last In, First Out). Imagina una pila de platos: solo puedes poner uno nuevo encima (Push) o quitar el de más arriba (Pop). No puedes sacar el del fondo sin quitar los demás.

Imagen 32. Estructura y operaciones de una Pila
Diagrama LIFO: Visualización de las operaciones fundamentales. "Push" agrega al tope y "Pop" elimina del tope.
Una Cola (Queue) funciona bajo el principio FIFO (First In, First Out). Es idéntico a una fila en el banco o el supermercado: los elementos se insertan por el final (Enqueue) y se extraen por el frente (Dequeue).

Imagen 33. Estructura y flujo de una Cola
Diagrama FIFO: Los datos fluyen en una dirección. Entran por la "cola" y salen por la "cabeza".
Tanto Pilas como Colas son "Tipos de Datos Abstractos" (TDA). Esto significa que definen un comportamiento, pero no cómo se guardan los bits. Podemos implementarlas usando Arreglos (memoria estática) o Listas Enlazadas (memoria dinámica).
Resumen: - Usa Arrays si sabes el tamaño máximo de antemano y la velocidad es crítica (ej. sistemas embebidos). - Usa Listas Enlazadas si el número de elementos es impredecible y quieres evitar el desbordamiento de memoria.