Splice en llistes V38718


Statement
 

pdf   zip   tar

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.

Entrada

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 #).

Sortida

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.

Public test cases
  • 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>
    {}
    
    
  • Information
    Author
    Mª Lluïsa Bonet i Pau Fernández
    Language
    Catalan
    Translator
    Mª Lluïsa Bonet i Pau Fernández
    Original language
    Spanish
    Other languages
    Spanish
    Official solutions
    Unknown.
    User solutions
    C++