Rotació de llistes. X48875


Statement
 

pdf   zip   tar

html

Feu el mètode

void rota (int);

de la classe Llista, la capçalera de la qual és al fitxer llista.hpp.

Quan cridem aquest mètode:

L.rota(n);

on L és una llista de tipus Llista doblement enllaçada, sense fantasma i amb punt d’interès, la llista L es modifica per l’aplicació d’n rotacions a l’esquerra (si n > 0) o de abs(n) rotacions a la dreta (si n < 0). El punt d’interès no es modifica (segueix apuntant al mateix element que apuntava abans de la rotació). Assumiu que n ≠ 0.

Podeu imaginar que l’anterior del primer element de la llista és l’últim element, i que el següent element del darrer element de la llista és el primer element (com si fos un cercle), i que moveu el punter al primer element n posicions (tenint en compte la polaritat d’n).

Fixeu-vos que si incrementeu aquest punter imaginari una posició (n = 1), llavors esteu rotant a l’esquerra, i que si el decrementeu una posició (n = -1) esteu rotant a la dreta.

Tingueu en compte que la mida de la llista L serà sempre la mateixa, independentment de les rotacions que se li apliquin.

Podeu assumir que la llista L no és buida (dit altrament: podeu posar a la pre del mètode que el paràmetre implícit té alments un element).

Entrada

El mètode rep un enter n ≠ 0.

Sortida

El mètode rota la llista del paràmetre implícit n posicions segons la polaritat d’n.

Observació

Heu d’enviar la solució comprimida en un fitxer .tar:

tar cvf program.tar rota_llista.cpp

Observeu que per compilar us donem el Makefile, la classe Llista amb tots els seus mètodes implementats (excepte rota) i el programa principal program.cpp.

Public test cases
  • Input

    10
    2 4 6 8 10 12 14 16 18 20
    -2
    -4
    -2
    3
    1
    15
    

    Output

    2 4 6 8 10 12 14 16 18 20 
    Rotació (-2): 18 20 2 4 6 8 10 12 14 16 
    18 20 2 4 6 8 10 12 14 16 
    Rotació (-4): 10 12 14 16 18 20 2 4 6 8 
    10 12 14 16 18 20 2 4 6 8 
    Rotació (-2): 6 8 10 12 14 16 18 20 2 4 
    6 8 10 12 14 16 18 20 2 4 
    Rotació (3): 12 14 16 18 20 2 4 6 8 10 
    12 14 16 18 20 2 4 6 8 10 
    Rotació (1): 14 16 18 20 2 4 6 8 10 12 
    14 16 18 20 2 4 6 8 10 12 
    Rotació (15): 4 6 8 10 12 14 16 18 20 2 
    
  • Input

    4
    4 2 5 3
    2
    -3
    4
    

    Output

    4 2 5 3 
    Rotació (2): 5 3 4 2 
    5 3 4 2 
    Rotació (-3): 3 4 2 5 
    3 4 2 5 
    Rotació (4): 3 4 2 5 
    
  • Information
    Author
    PRO1-Vilanova
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make