Implementeu una funció ITERATIVA que donada una cua d’enters d’entrada, produeix una cua d’enters de sortida idèntica a l’anterior, excepte que, tot 0 que inicialment tenia un nombre parell d’elements abans que ell ha estat esborrat, i tot 1 que inicialment tenia un nombre senar d’elements abans que ell ha estat esborrat.
Aquesta és la capcelera de la funció:
// Pre: // Post: La cua retornada té els mateixos elements que el valor rebut via el // paràmetre q, excepte que tot 0 que inicialment tenia un nombre parell // d'elements abans que ell ha estat esborrat, i tot 1 que inicialmente // tenia un nombre senar d'elements abans que ell ha estat esborrat. queue<int> remove01(queue<int> q);
Aquí teniu un exemple de cua d’entrada i la corresponent cua retornada:
0 1 4 5 1 0 6 7 0 0 1 1 8 1 0 9 0 0 1 1 0 1 => 4 5 1 0 6 7 0 1 8 9 0 1
Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.
Observació
La vostra funció i subfuncions que creeu han de treballar només amb cues. Heu de trobar una solució ITERATIVA i eficient del problema.
-1 -2 0 0 => -1 -2 0 1 9 -6 -3 0 6 0 4 -1 -5 => 1 9 -6 -3 6 4 -1 -5 -9 -5 -7 => -9 -5 -7 1 -9 0 6 1 1 1 10 1 -8 5 1 -3 0 0 1 1 0 1 => 1 -9 6 1 1 10 1 -8 5 -3 0 1 0 1 1 0 7 1 8 1 => 1 0 7 8 0 -1 1 -1 4 4 -7 0 1 0 -8 -9 0 0 0 0 -9 -4 => -1 1 -1 4 4 -7 0 1 0 -8 -9 0 0 -9 -4 8 7 -2 1 1 -7 0 0 0 1 0 3 1 1 0 => 8 7 -2 1 -7 0 3 1 0 1 -6 1 -7 5 8 0 1 1 4 -2 -5 0 1 1 1 -7 0 0 => -6 -7 5 8 0 1 4 -2 -5 0 1 1 -7 0 0 1 1 2 1 1 0 0 0 1 => 1 2 1 0 1 0 6 0 7 0 -10 -9 -3 0 4 => 1 0 6 0 7 0 -10 -9 -3 0 4 -8 -9 6 1 1 6 -5 -7 0 => -8 -9 6 1 6 -5 -7 0 0 6 1 4 0 0 -10 0 1 => 0 6 4 0 -10 1 0 0 -4 4 0 1 0 1 -2 8 8 0 1 -10 0 0 -2 => 1 0 -4 4 0 1 0 1 -2 8 8 -10 0 -2 2 -2 0 -2 -10 1 1 -3 1 => 2 -2 -2 -10 1 -3 1 0 => -7 1 0 0 -8 => -7 0 -8 1 -8 0 0 0 => 1 -8 0 0 0 -7 2 -6 0 -6 1 9 -4 1 0 6 7 0 0 1 0 8 8 => 0 -7 2 -6 0 -6 9 -4 1 0 6 7 0 1 0 8 8 -10 1 0 0 2 0 5 -10 1 1 0 1 10 2 0 0 0 => -10 0 2 0 5 -10 1 10 2 0 1 0 4 0 2 0 4 0 => 1 0 4 0 2 0 4 0