Donades dues llistes d’enters, volem saber si una és igual circularment a l’altra. És a dir, si es pot obtenir una llista a partir de l’altra rotant els seus elements.
Per exemple: és igual circularment a , perquè en posar el 3 de al final, obtenim . Un altre exemple: no és igual a . Un cas especial és que considerarem que dues llistes buides són iguals circularment.
L’exercici és implementar la funció següent:
/**
* @pre cert
* @post es retorna cert si l1 i l2 són iguals circularment,
* fals en cas contrari.
*/
bool circularly_equal(const list<int>& l1, const list<int>& l2)
Només cal enviar aquesta funció.
Només cal enviar el procediment demanat; el programa principal serà ignorat.
circularly_equal([], []) => true circularly_equal([1, 2], [2]) => false circularly_equal([1, 2], [2, 1]) => true circularly_equal([5, 3, 1], [3, 1, 5]) => true