Estructuras de datos, viéndolas funcionar
Pila, cola, lista enlazada y tabla hash con animaciones: pulsa push, pop, enqueue... y mira qué pasa.
Una estructura de datos es una forma de organizar la información para que ciertas operaciones sean rápidas. Elegir bien la estructura suele importar más que optimizar el código.
Visualizador
Elige una estructura, escribe un valor (o déjalo vacío para uno al azar) y pulsa las operaciones:
Cuál usar y cuándo
| Estructura | Regla | Se usa para | Buscar / acceder |
|---|---|---|---|
| Pila | LIFO — último en entrar, primero en salir | deshacer/rehacer, historial, llamadas a funciones, evaluar expresiones | solo la cima |
| Cola | FIFO — primero en entrar, primero en salir | tareas pendientes, impresión, mensajes, BFS | solo el frente |
| Lista enlazada | nodos encadenados por punteros | insertar/borrar al principio en O(1) sin mover nada | O(n): hay que recorrerla |
| Array / lista | elementos contiguos con índice | acceso por posición, recorrer | O(1) por índice, O(n) por valor |
| Tabla hash (map/dict) | clave → posición calculada | buscar por clave: contar, agrupar, cachés, "¿ya está?" | O(1) medio |
En tu lenguaje ya las tienes
// JavaScript
const pila = []; pila.push(x); pila.pop();
const cola = []; cola.push(x); cola.shift();
const mapa = new Map(); mapa.set(k, v); mapa.get(k); mapa.has(k);
const conjunto = new Set(); conjunto.add(x); conjunto.has(x);
# Python
pila = []; pila.append(x); pila.pop()
from collections import deque
cola = deque(); cola.append(x); cola.popleft()
mapa = {}; mapa[k] = v; mapa.get(k); k in mapa
conjunto = set(); conjunto.add(x); x in conjunto
// Java
Deque<Integer> pila = new ArrayDeque<>(); pila.push(x); pila.pop();
Queue<Integer> cola = new LinkedList<>(); cola.add(x); cola.poll();
Map<String,Integer> mapa = new HashMap<>(); mapa.put(k,v); mapa.get(k);
Set<Integer> conjunto = new HashSet<>(); conjunto.add(x); conjunto.contains(x);
Comprueba lo aprendido
pop(). ¿Qué sale?Siguiente paso
Big-O y complejidad · Recursividad · Estructuras de datos en Java