Afegiu una operació pública a la classe Llista vista a teoria tal que, donada una llista L i un valor x, reorganitzi els elements de L en funció de x. La llista L, un cop reorganitzada, contindrà els mateixos elements que la llista original però tots aquells que siguin més petits o iguals que x, apareixeran abans que tots els més grans, sempre respectant l’ordre que hi havia entre ells a la llista original L. Feu servir la següent especificació:
void reorganitzar_in(const T& x) /* Pre: p.i. = L */ /* Post: el p.i. conté els mateixos elements que L però reorganitzats de manera que primer apareixen els més petits o iguals que x, en el mateix ordre que en L, seguits pels més grans que x, en el mateix ordre que en L. L'element actual del p.i. és el primer del més grans que x, si existeix, sinó es situa a la dreta de tot */
Per exemple, si x = 9 i el contingut del p.i. és {48, 24, 33, 64}, com a resultat de la reorganització el contingut del p.i. no haurà canviat i el seu element actual farà referència al 48.
No utilitzeu cap de les operacions primitives de les llistes, accediu directament als atributs de la classe Llista. La vostra solució no pot crear mai cap node nou, només pot modificar els apuntadors del nodes ja existents.
Entrada
L’entrada és una llista en el paràmetre implícit i un valor.
Sortida
La sortida és el p.i. reorganitzat, 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ó.