Afegiu una operació pública a la classe Llista vista a teoria tal que, donada una llista L i un valor x, copïi i reorganitzi en funció de x els elements de L en una nova llista L’. La llista L’ contindrà els mateixos elements que L i tots aquells que siguin més petits o iguals que x, han d’aparèixer abans que tots els més grans però tot respectant l’ordre que hi havia entre ells a L. Feu servir la següent especificació:
Llista reorganitzar_out(const T& x) const /* Pre: cert */ /* Post: el resultat és una llista que conté els mateixos elements que el p.i. tal que tots els més petits o iguals que x al p.i. precedeixen als més grans que x al p.i. però sempre respectant l'ordre que hi havia entre ells al p.i. L'element actual de la llista retornada és el primer dels més grans que x, si existeix, sinó es situa a la detra del tot. El p.i. no es modifica */
Per exemple, si x = 5 i el contingut del p.i. és {9, 27, 3, 14, 1, 5}, el contingut de la nova llista serà {3, 1, 5, 9, 27, 14} i el seu element actual farà referència al 9.
No utilitzeu cap de les operacions primitives de les llistes, a excepció de la constructora buida, i accediu directament als atributs de la classe Llista.
Entrada
L’entrada és una llista en el paràmetre implícit i un valor.
Sortida
La sortida és la llista generada a partir de la reorganització del p.i. en funció del valor donat amb el seu element actual referenciant el primer valor més gran que el valor donat.
Observació
Només s’ha d’enviar un fitxer anomenat program.hh, que no ha de fer cap cout, que contingui la funció amb la capçalera de l’enunciat i qualsevol altra funció auxiliar que cregueu convenient, sense la funció main i sense posar-hi cap include. A l’apartat Public files trobareu els fitxers que us calen per construir la vostra solució.