Splice en listas V38718


Warning: This problem has some issue.

The system has detected that this problem may have some issue, as a mistake in its statement or a wrong solution. It should be soon be repaired by its problem setter.

Solution status: C++ . (red languages have some issue).

It is not recommended to try to solve this problem until this warning disapears.

Statement
 

pdf   zip   tar

En este ejercicio implementarás el método splice para la clase List. Este método recibe un iterador it y una lista L como parámetros, y tiene el siguiente comportamiento: todos los elementos de L se insertan en la lista parámetro implícito justo antes de la posición indicada por it, y después de la inserción la lista L queda vacía. La declaración es la siguiente:

/**
 * @brief introduce una lista en el p.i. justo delante del iterador.
 *
 * @pre   `L` es otra lista. it apunta a un elemento de la lista
 *         p.i. o a la posición end().
 *
 * @post  En la lista (p.i.) se ha introducido la lista L justo
 *        delante de donde apunta el iterador. L queda vacía. it no se mueve.
 */

void splice(iterator& it, List& L);

Los ficheros públicos (icono del gatito) contienen:

list.hh la clase List<T>
main.cc el programa principal (gestiona la entrada y salida)
Makefile para compilar con make en la terminal
.vscode para compilar y depurar con F5

Para entregar solo hace falta enviar el fichero list.hh modificado.

Entrada

De la entrada ya se encarga el programa principal. La entrada está formada por distintos casos seguidos. Cada caso comienza con un entero que indica la posición donde insertar, seguido de dos listas (cada lista acaba con #).

Salida

De la salida también se encarga el programa principal. La salida muestra la primera posición del iterador, seguida de la primera lista tras hacer el splice, el valor apuntado por el iterador una vez hecho el splice, y finalmente la segunda lista (que habrá quedado vacía), toda esta información en 4 líneas separadas y con una línea en blanco entre casos.

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
    Spanish
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++