Implementeu una funció ITERATIVA que, donades dues cues com a paràmetre, retorna una cua que s’obté intercalant els valors de les dues cues rebudes. Més concretament, siguin [a1,a2,…,an] i [b1,b2,…,bm] els elements de les dues cues escrits des del front fins al final. La cua resultant es calcula així:
// Pre: Siguin [a1,a2,...,an] i [b1,b2,...,bm] els valors inicials de q1 i q2, respectivament. // Post: En el cas n>=m, la cua retornada és [a1,b1,a2,b2,...,am,bm,a{m+1},a{m+2},...,an]. // En el cas n<m, la cua retornada és [b1,a1,b2,a2,...,bn,an,b{n+1},b{n+2},...,bm]. queue<int> intercal(queue<int> q1, queue<int> q2);
Aquí tenim un exemple de comportament de la funció:
intercal([1 3 2 5],[2 7 6 1 3 9]) = [2 1 7 3 6 2 1 5 3 9]
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.
Avaluació sobre 10 punts:
Entenem com a solució lenta una que és correcta i capaç de superar els jocs de proves públics. Entenem com a solució ràpida una que és correcta i capaç de superar els jocs de proves públics i privats.
intercal([8 1], [6 8]) = [8 6 1 8] intercal([4 7 2 6 5], [8 6 5]) = [4 8 7 6 2 5 6 5] intercal([1], [2 9 9 7 7]) = [2 1 9 9 7 7] intercal([9 9 5], [2 6]) = [9 2 9 6 5] intercal([1], [6]) = [1 6] intercal([2 8 5 8], [1 1 3 6]) = [2 1 8 1 5 3 8 6] intercal([6 3], [4 3 2 2 9 9]) = [4 6 3 3 2 2 9 9] intercal([6 6 5 5], [1 6 7 3]) = [6 1 6 6 5 7 5 3]