Rotacions sobre llista

Implementa l’acció genèrica:

    template <typename T>
    void apply_rotations(list<T>& data, const list<int>& rotations);

que aplica, en ordre, cada rotació de la llista rotations sobre la
llista data:

- k > 0: rotació a la dreta de k posicions (els k últims elements passen
  al davant).

- k < 0: rotació a l’esquerra de |k| posicions (els |k| primers elements
  passen al final).

- k = 0: no fa res.

Exemple

    	data inicial:   [3, a, 7, b, 2, x]
    rotations:      [2, -1, 4, -6, 3]

    Rotació  +2  ->  [2, x, 3, a, 7, b]   (2 últims al davant)
    Rotació  -1  ->  [x, 3, a, 7, b, 2]   (1 primer al final)
    Rotació  +4  ->  [a, 7, b, 2, x, 3]   (4 últims al davant)
    Rotació  -6  ->  [a, 7, b, 2, x, 3]   (|-6|%6 = 0, no canvia)
    Rotació  +3  ->  [2, x, 3, a, 7, b]   (3 últims al davant)

Observacions

- Les funcions i accions que creïs han de treballar només amb llistes
  (la classe list de la biblioteca STL) o arrays dinàmics. Has de trobar
  una solució ITERATIVA i eficient del problema.

- Cal aplicar cada rotació de manera individual. No es permet acumular
  les rotacions en una sola operació.

- Tota funció/acció que creïs ha de tenir la corresponent Precondició
  (Pre) i Postcondició (Post).

- En els bucles inclou l’invariant del bucle i la funció de fita.

IMPORTANT: Només cal enviar el procediment demanat; el programa
principal serà ignorat.

Informació del problema

Autoria: Bernardino Casas

Generació: 2026-06-10T13:19:49.203Z

© Jutge.org, 2006–2026.
https://jutge.org
