En aquest exercici implementareu el mètode splice per a
la classe List. Aquest mètode rep un iterador
it i una llista L com a paràmetres, i té el
següent comportament: tots els elements de L s’insereixen a
la llista paràmetre implícit just abans de la posició indicada per
it, i després de la inserció la llista L queda
buida. La declaració és la següent:
/**
* @brief s'introdueix una llista al p.i. just davant de iterator.
*
* @pre `L` es una altra llista. it apunta a un element de la llista
* p.i. o a la posició end().
*
* @post A la llista (p.i.) s'ha introduit la llista L just
* davant d'on apunta l'iterator. L queda buida. it no es mou.
*/
void splice(iterator& it, List& L);
Els fitxers públics (icona del gatet) contenen:
list.hh |
la classe List<T> |
main.cc |
el programa principal (gestiona l’entrada i sortida) |
Makefile |
per compilar amb make al
terminal |
.vscode |
per compilar i debuggar amb F5 |
Per entregar només cal enviar el fitxer list.hh
modificat.
De l’entrada se n’encarrega ja el programa principal.
L’entrada està formada per diferents cassos seguits. Cada cas comença
amb un enter que indica la posició on inserir, seguit de dues llistes
(cada llista acaba amb #).
De la sortida també se n’encarrega el programa principal. La
sortida mostra la primera posició de l’iterador, seguit de la primera
llista després de fer el splice, el valor apuntat per
l’iterador un cop fet el splice, i finalment la segona
llista (que haurà quedat buida), totes 4 informacions en linies
separades i amb una línia en blanc entre cassos.
Input
0 # # 1 1 2 3 # # 0 # 10 20 30 # 0 5 6 7 # 10 20 # 1 1 2 3 # 10 20 # 3 1 2 3 # 10 20 # 0 10 # 20 # 2 10 20 # 30 #
Output
<end>
{}
<end>
{}
2
{1, 2, 3}
2
{}
<end>
{10, 20, 30}
<end>
{}
5
{10, 20, 5, 6, 7}
5
{}
2
{1, 10, 20, 2, 3}
2
{}
<end>
{1, 2, 3, 10, 20}
<end>
{}
10
{20, 10}
10
{}
<end>
{10, 20, 30}
<end>
{}