Feu el mètode
void intercala (const Llista<T>&);
de la classe Llista
, la implementació de la qual us donem
al fitxer llista.hpp
.
Quan cridem aquest mètode:
L1.intercala(L2);
on L1, L2
són dues llistes de tipus Llista<T>
doblement enllaçades,
la llista L1
es modifica de manera que té la llista L2
intercalada (L2
no es modifica).
Això vol dir que la llista L1
comença amb el primer
element que ja tenia, seguit del primer de L2
, el segon de L1
,
el tercer de L2
, ... fins que s’acaben tots els elements de totes
dues llistes.
En general, si:
L1 = a1, a2, a1, …, am |
L2 = b1, b2, b3 …, bn |
Després de fer la crida a L1.intercala(L2)
tindrem que
L1 = a1, b1, a2, b2, a3, b3, … |
Tingueu en compte que no podeu assumir res sobre les mides de totes dues llistes, únicament que cap d’elles és buida.
Entrada
El mètode rep una instància de tipus Llista<T>
no buida.
El paràmetre implícit també és del mateix tipus i no és buit.
Sortida
El mètode intercala la llista rebuda com a paràmetre al paràmetre implícit.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar llista.cpp
Observeu que per compilar us donem el Makefile
,
la capçalera del mòdul funcional pila.hpp
,
que conté tota la implementació de tots els mètodes,
llevat del que heu d’implementar vosaltres,
i el programa principal program.cpp
.
La solució es compilarà perquè el fitxer llista.hpp
(que no heu de modificar) té la següent línia:
include "llista.cpp"
Input
6 1 3 5 7 9 11 10 2 4 6 8 10 12 14 16 18 20
Output
1 3 5 7 9 11 2 4 6 8 10 12 14 16 18 20 1 2 3 4 5 6 7 8 9 10 11 12 14 16 18 20
Input
4 4 2 5 3 2 8 10
Output
4 2 5 3 8 10 4 8 2 10 5 3