Data Structures
Stacks, queues, trees, heaps & hash tables — how they store and retrieve
Choosing the right data structure is often what separates a slow program from a fast one. Each structure trades off how quickly you can insert, remove, search or order data.
Linear structures
Stacks (last-in, first-out) and queues (first-in, first-out) impose an access order — stacks power undo and recursion, queues power scheduling and BFS. Linked lists chain nodes with pointers, giving cheap insertion and deletion anywhere without shifting elements, at the cost of no random access.
Hierarchical & keyed structures
Binary search trees keep keys ordered so lookups, insertions and range queries run in O(log n) on a balanced tree. Heaps are partially-ordered trees that surface the minimum or maximum in O(log n) — the engine behind priority queues and heap sort. Hash tables map keys to buckets through a hash function for average O(1) lookup, at the cost of unordered storage and occasional collisions.
The visualizers below let you push, pop, insert and delete to see exactly how each structure rearranges itself.
Try it interactively
Visualizador de Stack
Stack LIFO interactivo — apila y desapila valores con un puntero top animado y control paso a paso. Funciona directamente en tu navegador.
Abrir herramientaVisualizador de colas
Cola FIFO interactiva — inserta (enqueue) y extrae (dequeue) elementos con animación de los punteros front/rear y controles paso a paso. Se ejecuta directamente en el navegador.
Abrir herramientaVisualizador de listas enlazadas
Lista enlazada simple interactiva — inserta al principio/final, busca y elimina con animaciones de recorrido de punteros y controles paso a paso. Se ejecuta directamente en el navegador.
Abrir herramientaVisualizador de árbol binario de búsqueda
Árbol binario de búsqueda interactivo — inserta, busca y elimina con animaciones dinámicas del árbol, control paso a paso y pseudocódigo. Funciona directamente en el navegador.
Abrir herramientaVisualizador de Binary Heap
Binary max-heap interactivo — inserta elementos (insert) y extrae el valor máximo (extract-max) con animaciones de sift-up / sift-down, control paso a paso y pseudocódigo. Funciona directamente en el navegador.
Abrir herramientaVisualizador de Hash Table
Hash table interactiva con separate chaining — inserta, busca y elimina valores con animaciones que muestran el hash y la resolución de colisiones. Funciona directamente en el navegador.
Abrir herramientaPrefer a focused tool?
- Data Structures → See data structures build and rearrange, step by step
Preguntas frecuentes
¿Qué es una hash table?
Una hash table almacena pares clave/valor en un arreglo de buckets, usando una función hash para calcular el índice del bucket correspondiente a cada clave, lo que permite realizar inserciones, búsquedas y eliminaciones a una velocidad casi constante.
¿Qué es una colisión de hash (hash collision)?
Ocurre cuando dos claves distintas se hashean al mismo bucket. Esta herramienta resuelve las colisiones mediante separate chaining — cada bucket contiene una lista enlazada (linked list) de entradas.
¿Cuál es la complejidad temporal de las operaciones de una hash table?
En promedio es O(1) para insertar, buscar y eliminar. En el peor caso es O(n), cuando muchas claves colisionan en el mismo bucket.
¿Qué función hash usa esta herramienta?
Una función hash modular simple, index = value % 7, para que los buckets sean fáciles de seguir. Las hash tables reales usan funciones hash más robustas y se redimensionan automáticamente para mantener las cadenas cortas.