📝 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_tyqueue_l_tque 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
nsucesivamente 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
- Proyectos que puedes empezar para aprender a programar (Academia San Roque)

- 15 ejercicios básicos en R (con soluciones)

- 📘 5 Ejercicios Sencillos de Programación en R (con soluciones)

- Guía para Aprender a Estudiar Programación con las 10 Claves de la Autodisciplina

- Serializar una lista de personas (nombre, apellido, DNI) en Java y guardarla en un archivo binario

- Simulacro de Examen — Fundamentos de Programación (Laboratorio)

- Reflexiones en Academia SanRoque: La importancia de la motivación, el esfuerzo y el aprendizaje en la educación y la formación

- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso

- Simulacro #4 – Examen de C++ / Estructuras de Datos

ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido





































































































































































































































































INFORMACIÓN SOBRE 







Comments are closed