Implementa una funció RECURSIVA que, donades dues cues d’enters, retorna una altra cua que conté la cua resultat d’intercalar els elements de la primera cua amb els elements de la segona. Si una de les cues s’acaba abans que l’altra, els elements sobrants s’afegeixen tal qual a la cua resultant.
La capçalera de la funció és la següent:
// \textbf{Pre}: cert
// \textbf{Post}: Retorna una cua amb el resultat d'intercalar els elements de q1 i q2
// ~~~ començant per q1.
queue<int> intercala_cues(const queue<int> &q1, const queue<int> &q2); Per exemple, donades les cues
q1 = [1, 3, 5] (1 seria el primer element de la cua)
q2 = [2, 4, 6, 8, 10] (2 seria el primer element de la cua)
intercala_cues(q1, q2) = [1, 2, 3, 4, 5, 6, 8, 10]
Només cal enviar el procediment demanat; el programa principal serà ignorat.
La funció i les subfuncions que creïs han de treballar només amb cues
(la classe queue de la biblioteca STL). Has de trobar una
solució RECURSIVA i eficient del problema. En
particular, no hi hauria d’haver cap bucle en cap de les funcions que
implementis. Si crees funcions auxiliars, afegeix-hi les corresponents
Pre i Post. En les crides recursives,
inclou tant la Hipòtesi d’inducció com la
funció de fita/decreixement de cada crida
recursiva.
Input/Output