Afegeix un mètode públic a la classe
List<T> que, donada una altra llista
other, transfereixi tots els valors de other
al final de la llista implícita, deixant buida la llista
other.
La capçalera és la següent:
/**
* @brief Transfereix tots els elements de `other` al final de la
* llista, en el mateix ordre en què estan.
*
* @pre `other` es una altra llista, possiblement buida.
* @post `other` queda buida i la llista implícita té tots els
* elements de `other` al final, en el mateix ordre.
**/
void push_back_all(List& other);
Per poder avaluar l’ús de punters, no feu servir altres mètodes, ni públics ni privats, de la classe per resoldre el problema.
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 té dues
línies, a on la primera conté una llista L en el format
{e1, e2, ..., eN} (a on l’element de més a l’esquerra és el
front i el de més a la dreta el back), i la segona
línia té la llista other que cal transferir al final de
L. Els cassos se separen per una línia buida.
De la sortida també se n’encarrega el programa principal. La
sortida mostra les dues llistes L i other,
cada una en una línia, un cop cridat el mètode
push_back_all. També se separen els resultats dels
diferents cassos amb una línia buida.
Input
{1, 2, 3}
{4, 5, 6}
{4, 5, 6}
{}
{}
{1, 2, 3}
{}
{}
{1, 2}
{3, 4, 5, 6}
Output
{1, 2, 3, 4, 5, 6}
{}
{4, 5, 6}
{}
{1, 2, 3}
{}
{}
{}
{1, 2, 3, 4, 5, 6}
{}