COMPARTE ESTE ARTÍCULO

⏳ Enunciados + soluciones (listas para ocultar con spoiler en WordPress)

Cómo exprimirlo

  1. Copia la sección de enunciados y ponle una etiqueta spoiler para que el lector pueda tapar la solución.
  2. Recomienda resolverlo en 2 h 30 min sin mirar nada.
  3. Tras acabar, que destape la respuesta y se auto-corrija.
  4. Objetivo: ≥ 8 / 10 antes del examen real.

1️⃣ Enunciados

Dada una lista simple sll_t<T> sin orden explícito, implementa

template <typename T>
void sll_t<T>::remove_duplicates();

Sin usar memoria dinámica adicional (solo punteros). Complejidad aceptable O(n²); se valorará O(n) con unordered_set.


Implementa una cola FIFO sobre array circular:

template<typename T, size_t MAX = 1024>
class circ_queue_t {
public:
    circ_queue_t();
    void push(const T&);      // O(1)
    void pop();               // O(1)
    const T& front() const;
    bool empty() const;
    bool full()  const;
private:
    T data_[MAX];
    size_t head_, tail_, sz_;
};

No utilices std::queue. Usa aritmética modular.


Escribe

int eval_postfix(const vector_t<char>& expr);

que recibe una expresión con dígitos individuales ('0'…'9') y operadores + – * / en postfijo y devuelve el resultado entero.

Ejemplo:
[ '3','4','2','*','1','-','+' ] → 3 + (4*2-1) = 10

Usa stack_l_t<int>.


Ordena in-place una dll_t<int> sin convertirla a vector:

void merge_sort(dll_node_t<int>** headRef);   // llamada inicial con &head_

Pistas

  1. Divide la lista en dos mitades con la técnica slow/fast.
  2. Ordena recursivamente.
  3. Funde (merge) manteniendo el orden.

Complejidad requerida O(n log n) y O(log n) extra por la pila de recursión.


Para un grafo dirigido representado con lista de adyacencia:

using digraph_t = vector_t< vector_t<int> >;

Implementa

bool topo_sort(const digraph_t& g, vector_t<int>& order);
  • Devuelve false si hay ciclo; order queda vacío.
  • Devuelve true y rellena order con un orden topológico válido si el grafo es acíclico (DAG).
  • Complejidad O(V + E). Usa algoritmo de Kahn (indegrees).

Fin de la parte visible para el alumno
———— NO pasar si vas a hacer el simulacro ————


2️⃣ Soluciones oficiales

Coloca cada bloque dentro de un spoiler independiente (<details> … </details>) para que el lector lo abra solo cuando quiera.


Solución 1 – remove_duplicates

Coste: O(n²). (Versión O(n) ⇒ recorrer con unordered_set<T>).


Solución 2 – Cola circular


Solución 3 – Evaluar RPN


Solución 4 – Merge Sort lista doble


Solución 5 – Orden topológico (Kahn)


3️⃣ Mini-tests rápidos


4️⃣ Tips de último repaso

  • Compila con -std=c++17 -Wall -Wextra -pedantic.
  • Documenta las precondiciones con assert.
  • Practica trazar a mano las estructuras (pila, cola, punteros) para evitar confusiones en el examen.
  • ¡Repasa complejidades Big-O! Dan puntos fáciles.

¿Te ha gustado este tercer simulacro? Déjame un comentario o comparte el post para que otros puedan practicar. ¡Mucho ánimo con tu estudio! 🚀

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO