Copiar subseqüencia posicions parells

Preliminars

En aquest exercici treballarem sobre la següent estructura de dades, que
ens serveix per a mantenir una seqüència de valors dins de items
encadenats mitjançant punters.

    struct Item {
    	int value;
    	Item* next;
    };

Exercici

Implementeu una funció RECURSIVA que, donat un Item* que apunta a una
seqüència d’items encadenats, retorna un altre Item* que apunta a una
nova seqüència que és una còpia de la subseqüència d’elements a posició
parell en la original. En altres paraules, la nova seqüència d’items no
comparteix memòria amb la original, però la seva corresponent seqüència
de valors és la subseqüencia de valors a posició parell original.
Sobre-entenem que el primer item accessible està a posició 0, el seu
next a posició 1, el següent next a posició 2, i així successivament.

    // Pre:  pitem apunta al primer element d'una seqüència correcta d'items encadenats.
    //       L'últim element de la seqüència apunta a NULL. El propi pitem podria ser NULL,
    //       cas en el qual no hi hauria elements a la seqüència.
    // Post: Retorna un Item* que representa una seqüència d'items nous tals que la seva
    //       corresponent seqüència de valors és una còpia de la subseqüencia de valors
    //       a posició parell de la seqüència original.
    //       La seqüència de valors original no ha canviat.
    Item* copyEvenPos(Item* pitem);

Aquí tenim un exemple de paràmetres entrada i sortida de la funció:

    copy([3]->[2]->[5]->[1]->[8]->NULL) = [3]->[5]->[8]->NULL

Fixeu-vos que l’enunciat d’aquest exercici ja ofereix uns fitxers que
haureu d’utilitzar per a compilar:
Makefile, program.cpp, copyEvenPos.hpp. Us falta crear el fitxer
copyEvenPos.cpp amb els corresponents includes i implementar-hi la
funció anterior. Quan pugeu la vostra solució al jutge, només cal que
pugeu un tar construït així:


    tar cf solution.tar copyEvenPos.cpp

Entrada

L’entrada té un nombre arbitrari de casos. Cada cas consisteix en una
línia amb una llista de valors enters. Fixeu-vos en que el programa que
us oferim ja s’encarrega de llegir aquestes entrades. Només cal que
implementeu la funció abans esmentada.

Sortida

Per a cada cas, la sortida conté dues línies, la primera amb la mateixa
llista de valors original, i la segona amb la llista còpia de valors a
posició parell resultant. Fixeu-vos en que el programa que us oferim ja
s’encarrega d’escriure aquestes dades. Només cal que implementeu la
funció abans esmentada.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T21:02:05.012Z

© Jutge.org, 2006–2026.
https://jutge.org
