1. Qué es y cómo funciona

Intuición

  • Idea central: ¿Cuál es la idea simple detrás de esta estructura?
  • Problema que resuelve: ¿Qué tipo de problema hace sencillo o eficiente?

Definición / propiedades

  • Definición formal: invariantes y reglas que siempre se cumplen.
  • Propiedades clave: orden, acotamiento, restricciones sobre elementos, estabilidad, etc.

Representación

  • Descripción de la organización interna (arrays, nodos enlazados, árboles, tablas, etc.).
  • Ilustración sugerida: incluye aquí un diagrama ASCII o referencia a una imagen en attachments/.

Debe responder a: “¿qué estoy mirando?“

2. Operaciones y complejidad

Operaciones principales

  • Lista de operaciones con nombres estandarizados (por ejemplo: push/pop/peek, insert/delete/find, append/concat, union/intersect).
  • Para cada operación: breve descripción de lo que hace.

Complejidad

  • Por operación: tiempo (peor/ promedio/ amortizado) y complejidad espacial adicional.
  • Notas sobre costos ocultos (reallocs, rehash, recorridos, copias).

Detalles operativos

  • Casos especiales: operaciones en estructura vacía/llena, duplicados, orden, límites de tamaño.
  • Comportamiento en concurrencia o fallos (si aplica).

Debe responder a: “¿qué puedo hacer y cuánto cuesta?“

3. Implementación

Idea de implementación

  • Descripción de la(s) estrategia(s) típica(s) para implementar la estructura.
  • Algoritmos clave y pasos principales.

Invariantes

  • Lista de comprobaciones e invariantes que el código debe garantizar siempre (por ejemplo: punteros no nulos, tamaño consistente, heap property, ordenamiento mantenido).

Ejemplo de código

  • Proporciona 1-2 snippets claros y mínimos (en Python).
  • Ejemplo de uso típico con entrada y salida esperada.

Debe responder a: “¿cómo lo programo sin romperlo?“

4. Uso y criterio

Casos de uso

  • Situaciones y problemas donde la estructura encaja naturalmente.

Cuándo NO usarlo

  • Escenarios donde su uso es contraproducente o subóptimo.

Comparaciones

  • Alternativas comunes y cuándo elegir cada una (lista comparativa breve).

Ventajas / desventajas

  • Trade-offs prácticos en rendimiento, memoria, simplicidad, y facilidad de implementación.

Señales de reconocimiento

  • Pistas en el enunciado de un problema que indican que esta estructura es adecuada.

Debe responder a: “¿cuándo conviene usarlo?“

5. Relaciones y extensiones

Variantes

  • Variantes y mejoras (por ejemplo: versiones balanceadas, persistentes, acotadas, indexadas, con hashing, etc.).

Relación con otras estructuras

  • Dependencias conceptuales y cómo se combina con otras estructuras.

Notas avanzadas

  • Temas avanzados como persistencia, concurrencia, paralelismo, ordenamientos aleatorios, caching, tuning de parámetros.

Debe responder a: “¿cómo encaja en el mapa general de estructuras de datos?“

6. Referencias y recursos

  • Enlaces y libros de referencia, artículos científicos.
  • Visualizaciones y demostraciones.