📝 Introducción
En esta entrada aprenderás los fundamentos mínimos de C++ que necesitas para resolver una colección de ejercicios clásicos de estructuras de datos y algoritmos. Cada sección incluye:
- Conceptos teóricos esenciales.
- Código completo y funcional en C++-17.
- Explicaciones paso a paso para que entiendas qué hace cada línea y por qué.
💡 Todos los ejemplos usan las clases
vector_t
,matrix_t
,dll_t
,sll_t
,stack_l_t
yqueue_l_t
que normalmente acompañan a la asignatura «Estructuras de Datos». Si ya las tienes implementadas basta con copiar-pegar los métodos nuevos; si no, puedes sustituirlas porstd::vector
,std::list
, etc. mientras practicas.
🔧 1. Fundamentos de C++ que vas a usar
Tema | ¿Para qué lo necesitaremos? | Píldora rápida |
---|---|---|
Plantillas (templates) | Para que las listas, pilas, matrices, etc. funcionen con cualquier tipo T . | template<typename T> class dll_t { … }; |
Clases & métodos | Encapsulan datos (head_ , tail_ , etc.) y operaciones (extract , reverse , …). | Declaras en el .hpp , implementas en el .tpp o justo debajo con inline . |
Punteros & referencia | Manipular nodos y evitar copias caras. | dll_node_t<T>* p; T& operator()(int i,int j); |
Recursión | Para backtracking y recorridos implícitos. | Una función que se llama a sí misma con un caso base. |
Aserciones (assert ) | Verifican precondiciones en tiempo de ejecución. | assert(b > 1 && b < 10); |
Complejidad Big-O | Eficiencia que exige el enunciado. | Evita bucles anidados innecesarios y copias costosas. |
📌 2. Ejercicio 1 – dll_t<T>::extract(…)
(1 punto)
Objetivo
Extraer cualquier nodo de una lista doblemente enlazada controlando los tres casos extremos:
- Extraer en medio.
- Extraer la cabeza (
head_
). - Extraer la cola (
tail_
).
Implementación

Complejidad: O(1).
📌 3. Ejercicio 2 – Conversión de base (2 puntos)
Firma

Idea
- Dividir
n
sucesivamente entreb
. - Guardar cada resto.
- Invertir el orden de los restos para obtener la representación.
Código
Complejidad: O(logb n).
📌 4. Ejercicio 3 – Shunting-Yard (2 puntos)
Firma

Pasos clave
- Recorrer la expresión carácter a carácter.
- Usar una pila para operadores y una cola para la salida.
- Desencolar operadores con mayor o igual precedencia antes de apilar el nuevo.
Código
Complejidad: O(n).
📌 5. Ejercicio 4 – Partición equitativa (Backtracking, 2 puntos)
Firma

Algoritmo recursivo
Complejidad: O(2ⁿ) en el peor caso, inevitable al enumerar TODAS las particiones.
📌 6. Ejercicio 5 – Matrices simétricas (2 puntos)
(a) Versión iterativa — O(m²)

(b) Versión recursiva — O(m²) con pila implícita
📌 7. Ejercicio 6 – Transponer in-place (1 punto)

Recorremos solo la mitad superior (j > i
) y evitamos matrices auxiliares.
📌 8. Ejercicio extra – sll_t<int>::intersect(…)
(1 punto)

📌 9. Ejercicio extra – dll_t<T>::reverse()
(1 punto)

📌 10. Ejercicio extra – Producto escalar recursivo (2.5 puntos)

▶️ Cómo probar cada ejercicio
- Crea un proyecto con CMake o tu IDE favorito.
- Copia las clases base (
vector_t
,matrix_t
,dll_t
, etc.). - Añade solo los métodos mostrados arriba.
- Añade tests rápidos en
main()
para cada método conassert
.
🎯 Conclusión
Con estas implementaciones ya tienes un kit completo de soluciones y la explicación conceptual que necesitas para:
- Profundizar en plantillas y punteros.
- Practicar recursión y backtracking.
- Medir la eficiencia de tus algoritmos.
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso
- Simulacro #4 – Examen de C++ / Estructuras de Datos
- Simulacro #3 – Examen de C++ / Estructuras de Datos
- Simulacro #2 de Examen C++
- Simulacro de Examen de Estructuras de Datos en C++ (con Soluciones)Guía completa para repasar antes del parcial/final
- Fundamentos de C++ y Ejercicios Resueltos de Estructuras de Datos: Guía Paso a Paso
- Examen Avanzado-Moderado de Programación en C#
- Examen de Programación Intermedio: POO, Colecciones y Serialización
- Examen Avanzado de Fundamentos de Programación en C#
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed