Estructuras de datos: preguntas de práctica con explicaciones

Preguntas tipo test gratis de Estructuras de datos con pistas y explicaciones, en tres niveles: términos y datos clave, aplicar los conceptos, casos y análisis.

Problema de práctica gratisFácil

¿Qué es la propiedad de max-heap?

Siguiente problema →

Qué practicas

  1. Fáciltérminos y datos clave
  2. Mediaaplicar los conceptos
  3. Difícilcasos y análisis

Aprende Estructuras de datos desde cero

Antes de esto: Algoritmos y complejidad

1Qué es una estructura de datos

Una estructura de datos es una forma de organizar los datos en memoria para que ciertas operaciones sean rápidas: buscar un elemento, añadir uno, eliminar uno.

Ninguna estructura es rápida en todo. Elegir una significa elegir qué operaciones deben ser baratas. Sus costes se escriben en notación O grande, con n el número de elementos.

Los dos bloques básicos son el array y la lista enlazada.

a7[0]3[1]9[2]4[3]7394∅h

Un array guarda sus elementos en un único bloque de memoria, uno tras otro. El ordenador puede calcular dónde está el elemento i, así que leer a[i] cuesta O(1). Insertar al principio obliga a desplazar todos los elementos: O(n).

Una lista enlazada guarda cada elemento en un nodo con un puntero al nodo siguiente. El último puntero es nulo. Insertar en la cabeza (h) solo cambia un puntero: O(1). Pero para llegar al elemento i hay que seguir i punteros: O(n).

Una lista doblemente enlazada tiene además un puntero al nodo anterior, así que se puede recorrer en ambos sentidos.

Autoevaluación ¿Qué operación es O(1) en un array pero O(n) en una lista simplemente enlazada?
  1. Contar los elementos uno por uno
  2. Insertar un elemento nuevo al principio
  3. Leer el elemento del índice i
  4. Visitar cada elemento una vez

Respuesta: Leer el elemento del índice i. Un array calcula directamente la dirección del elemento i. Una lista enlazada tiene que seguir i punteros desde la cabeza. Insertar al principio es el caso contrario: barato para una lista, caro para un array.

2Pilas y colas

Una pila es como un montón de platos: solo se añade y se quita por arriba. El último elemento en entrar es el primero en salir: LIFO.

  • push pone un elemento arriba, pop quita el elemento de arriba, peek lee el de arriba sin quitarlo. Todas son O(1).
  • Usos: la función deshacer de un editor, la pila de llamadas de un programa, comprobar que los paréntesis están balanceados, la búsqueda en profundidad.

Una cola es como la fila de una caja: te unes por detrás y sales por delante. El primer elemento en entrar es el primero en salir: FIFO.

  • enqueue añade por detrás, dequeue quita por delante. Ambas son O(1).
  • Usos: trabajos de impresión, mensajes a la espera de ser procesados, la búsqueda en anchura.

Una deque (cola de doble extremo) permite añadir y quitar por ambos extremos. Una cola de prioridad siempre quita primero el elemento de mayor prioridad; normalmente se construye como un montículo.

Autoevaluación ¿Qué estructura de datos encaja mejor con el botón “deshacer” de un editor de texto?
  1. Un grafo
  2. Una cola
  3. Una pila
  4. Una tabla hash

Respuesta: Una pila. Deshacer debe revertir primero la acción más reciente: último en entrar, primero en salir. Una cola desharía primero la acción más antigua.

3Árboles, montículos, tablas hash y grafos

Un árbol tiene un nodo superior, la raíz. Todos los demás nodos tienen exactamente un padre. Los nodos sin hijos son hojas. Un árbol con n nodos tiene n − 1 aristas.

En un árbol binario cada nodo tiene como máximo dos hijos. Un árbol binario de búsqueda (BST) añade una regla: las claves del subárbol izquierdo son menores que el nodo, las del subárbol derecho son mayores.

Buscar en un BST sigue un solo camino hacia abajo, así que cuesta O(altura). Un árbol equilibrado (AVL, rojinegro) mantiene la altura cerca de log₂ n. Las claves insertadas en orden crean una cadena de altura n.

Un montículo (heap) es un árbol binario en el que cada padre es menor que sus hijos (min-heap) o mayor (max-heap). El mínimo o el máximo está en la raíz, e insertar y extraer cuestan O(log n).

Una tabla hash guarda pares clave–valor. Una función hash convierte la clave en un índice, así que insertar y buscar cuestan O(1) en promedio. Dos claves con el mismo índice son una colisión, que se resuelve con encadenamiento (una lista por casilla) o con direccionamiento abierto (probar otra casilla).

Un grafo tiene vértices unidos por aristas, que pueden tener dirección o peso. Se guarda como matriz de adyacencia, con memoria O(V²), o como listas de adyacencia, O(V + E).

Autoevaluación Las claves 50, 30, 70, 20 y 40 se insertan en este orden en un árbol binario de búsqueda vacío. ¿Cuál es el hijo izquierdo de 30?
  1. 20
  2. 40
  3. 70
  4. No tiene hijo izquierdo

Respuesta: 20. 20 es menor que 50, así que va a la izquierda, hacia 30. También es menor que 30, así que vuelve a ir a la izquierda. 40 es mayor que 30 y se convierte en su hijo derecho.

4El método paso a paso

Las preguntas suelen describir una tarea y preguntar qué estructura encaja, o preguntar cómo queda una estructura tras algunas operaciones.

  1. Encuentra la operación que debe ser rápida: acceso por posición, por clave, el elemento más nuevo, el más antiguo, el más pequeño o un rango.
  2. Asóciala a una estructura: índice → array, clave → tabla hash, el más nuevo → pila, el más antiguo → cola, el menor o el mayor → montículo, orden o rangos → árbol de búsqueda equilibrado.
  3. Comprueba el coste, en notación O grande, de las demás operaciones que necesita la tarea.
  4. En una pregunta de traza, realiza las operaciones una a una y anota el estado tras cada una.
  5. Comprueba el estado final con la regla de la estructura: LIFO, FIFO, el orden del BST o el orden del montículo.

5Un ejemplo resuelto

Sigue cada paso. Intenta adivinar el siguiente antes de abrirlo.

Ejemplo resuelto

Las claves 50, 30, 70, 20, 40 y 60 se insertan en este orden en un árbol binario de búsqueda vacío. ¿Cuál es el recorrido en orden y cuántas comparaciones necesita la búsqueda de 60?

1

Inserta la raíz

La primera clave, 50, se convierte en la raíz.

2

Inserta 30 y 70

30 es menor que 50, así que va a la izquierda. 70 es mayor que 50, así que va a la derecha.

503070
3

Inserta 20, 40 y 60

20: menor que 50, menor que 30, así que a la izquierda de 30. 40: menor que 50, mayor que 30, así que a la derecha de 30. 60: mayor que 50, menor que 70, así que a la izquierda de 70.

503070204060
4

Recorre en orden

Un recorrido en orden visita el subárbol izquierdo, luego el nodo y después el subárbol derecho.

Eso da 20, 30, 40, 50, 60, 70: las claves ordenadas, como ocurre siempre en un BST.

5

Busca 60

Compara con 50: es mayor, ve a la derecha. Compara con 70: es menor, ve a la izquierda. Compara con 60: encontrado.

503070204060

La búsqueda necesita 3 comparaciones, una por nivel.

Respuesta

En orden: 20, 30, 40, 50, 60, 70. La búsqueda de 60 necesita 3 comparaciones.

6Errores frecuentes

  • Confundir LIFO y FIFO. Una pila devuelve el elemento más nuevo, una cola el más antiguo.
  • Creer que una lista enlazada da acceso rápido por índice. Tiene que recorrerse desde la cabeza.
  • Suponer que un BST siempre es O(log n). Solo lo es un árbol equilibrado; las inserciones en orden dan O(n).
  • Olvidar las colisiones en una tabla hash. O(1) es el caso promedio, no el peor caso.
  • Confundir los recorridos. Preorden: primero el nodo. En orden: el nodo en medio. Postorden: el nodo al final.
  • Usar una matriz de adyacencia para un grafo grande y disperso. Desperdicia memoria O(V²).
Autoevaluación Haces enqueue de 1, 2 y 3 en una cola vacía, en este orden. ¿Qué elemento devuelve el primer dequeue?
  1. 1, 2 y 3 a la vez
  2. 1
  3. 2
  4. 3

Respuesta: 1. Una cola es primero en entrar, primero en salir, así que sale primero el 1. El 3 sería la respuesta para una pila (pop), que devuelve el elemento más nuevo.

7Cómo son las preguntas de examen

  • Fácil: términos y datos clave. LIFO y FIFO, qué es un nodo, una raíz o una hoja, la regla del BST, qué hace una función hash.
  • Medio: aplicar los conceptos. Qué estructura encaja con una tarea, el resultado de push y pop o de inserciones en un BST, recorridos de árboles, una tabla hash con sondeo lineal, costes en notación O grande.
  • Difícil: casos y análisis. Árboles equilibrados, montículos en arrays, árboles B, tries, union-find, filtros de Bloom y diseños como una caché LRU.

En un montículo guardado en un array desde el índice 0, los hijos del índice i están en 2i + 1 y 2i + 2, y su padre está en ⌊(i − 1) / 2⌋.

Apréndelo paso a paso en la appApréndelo paso a paso en la app

Preguntas de ejemplo

Ejemplo 1Fácil

¿Cuál es la principal diferencia entre un arreglo estático y un arreglo dinámico?

  1. AUn arreglo estático tiene un acceso por índice más lento
  2. BUn arreglo dinámico puede crecer trasladándose a un bloque de memoria mayor
  3. CUn arreglo dinámico almacena sus elementos en nodos enlazados para poder crecer de uno en uno
  4. DUn arreglo estático solo puede almacenar números
Mostrar pistas
  1. Las listas de Python y los ArrayList de Java son ejemplos de uno de ellos.
  2. Ahora hay dos respuestas incorrectas tachadas. Una de las dos que quedan es la correcta.
Mostrar la respuesta y la explicación

Por qué esta es la respuesta

Un arreglo estático tiene un tamaño fijo; un arreglo dinámico reserva un arreglo mayor y copia los elementos cuando está lleno.

Respuesta

B · Un arreglo dinámico puede crecer trasladándose a un bloque de memoria mayor
Ejemplo 2Media

¿Cómo funciona extract-min en un min-heap binario?

  1. ASe elimina el último elemento del arreglo
  2. BSe mueve el último elemento a la raíz y se hace bajar (sift-down)
  3. CSe elimina la raíz y se desplazan todos los elementos una posición a la izquierda
  4. DSe buscan en todas las hojas el nuevo mínimo
Mostrar pistas
  1. Mantén el árbol completo y luego corrige el orden.
  2. Ahora hay dos respuestas incorrectas tachadas. Una de las dos que quedan es la correcta.
Mostrar la respuesta y la explicación

Por qué esta es la respuesta

El último elemento ocupa el hueco de la raíz y se intercambia con su hijo menor hasta que se cumple la propiedad de montículo, lo que cuesta O(log n).

Respuesta

B · Se mueve el último elemento a la raíz y se hace bajar (sift-down)
Ejemplo 3Difícil

Sin unión por rango ni compresión de caminos, ¿cuál es el coste en el peor caso de un solo find en una estructura union-find con n elementos?

  1. AO(1)
  2. BO(α(n))
  3. CO(log n)
  4. DO(n)
Mostrar pistas
  1. Los árboles pueden degenerar.
  2. Ahora hay dos respuestas incorrectas tachadas. Una de las dos que quedan es la correcta.
Mostrar la respuesta y la explicación

Por qué esta es la respuesta

Las uniones ingenuas pueden enlazar los árboles formando una cadena larga, así que find puede tener que seguir n − 1 punteros al padre; las dos heurísticas lo acercan a un coste constante.

Respuesta

D · O(n)

Preguntas y respuestas

Estructuras de datos: ¿qué es?

Una estructura de datos es una forma de organizar los datos en memoria para que ciertas operaciones sean rápidas: buscar un elemento, añadir uno, eliminar uno.

Ninguna estructura es rápida en todo. Elegir una significa elegir qué operaciones deben ser baratas. Sus costes se escriben en notación O grande, con n el número de elementos.

Estructuras de datos: ¿cómo se aprende paso a paso?
  1. Qué es una estructura de datos
  2. Pilas y colas
  3. Árboles, montículos, tablas hash y grafos
  4. El método paso a paso
  5. Un ejemplo resuelto
  6. Errores frecuentes
  7. Cómo son las preguntas de examen
Estructuras de datos: ¿qué se practica?
  • Fácil: términos y datos clave
  • Media: aplicar los conceptos
  • Difícil: casos y análisis

Cada pregunta tiene cuatro opciones y solo una es correcta. ¿Te has atascado? Abre primero una pista pequeña y la explicación completa solo cuando la necesites.

Cómo funciona la práctica

  • Cada pregunta tiene cuatro opciones y solo una es correcta.
  • ¿Te has atascado? Abre primero una pista pequeña y la explicación completa solo cuando la necesites.
  • Tu progreso, tus errores y tus problemas guardados se conservan para que puedas repasar antes del examen.

Temas antes y después de este

Aprende primero

Asignaturas con este tema

Más temas de Informática

Hoja de ejercicios imprimible