Mètode de llistes per intercanviar (swappejar) la posició de dos elements apuntats per iteradors

Implementeu un nou mètode de la classe List que rebi dos iteradors i
intercanvii de posició els elements (items) apuntats per aquests
iteradors. Això vol dir que cadascun d’aquests elements passarà a ocupar
la posició dins la llista que ocupava l’altre element. Els iteradors no
han de canviar. Per tant, cadascun ha de seguir apuntant a la mateixa
memòria. Els valors dels elements tampoc han de canviar.

D’entre els fitxers que s’adjunten en aquest exercici, trobareu list.hh,
a on hi ha una implementació de la classe genèrica List. Haureu de
buscar dins list.hh les següents línies:

    // Pre:  it1,it2 apunten a elements de la llista implícita.
    // Post: it1,it2 continuen apuntant als mateixos elements,
    //       i *it1, *it2 continuen valent el mateix que abans.
    //       però *it1 ocupa la posició que ocupava abans *it2,
    //       i *it2 ocupa la posició que ocupava abans *it1.
    //       A part d'això, res més ha canviat.
    //       No s'ha creat ni eliminat memòria.
    // Descomenteu les següents dues linies i implementeu el mètode:
    // void swapPositionsOfItems(iterator &it1, iterator &it2) {
    // }

Descomenteu les dues linies que s’indiquen i implementeu el mètode. No
toqueu la resta de la implementació de la classe, excepte si, per algun
motiu, considereu que necessiteu afegir algun mètode auxiliar a la part
privada.

D’entre els fitxers que s’adjunten a l’exercici també hi ha main.cc
(programa principal), i el podeu compilar directament, doncs inclou
list.hh. Només cal que pugeu list.hh al jutge.

Entrada

La entrada del programa és una seqüència d’instruccions del següent
tipus que s’aniran aplicant sobre una llista que se suposa inicialment
buida i dos iteradors it1, it2, que se suposen situats inicialment al
principi (i final) d’aquesta llista:

    push_front s (s és un string)
    push_back s (s és un string)
    pop_front 
    pop_back
    it1++
    it1--
    it2++
    it2--
    *it1
    *it2
    swapPositionsOfItems

Se suposa que la seqüència d’entrada serà correcta (sense pop_front
sobre llista buida ni amb algun dels iteradors apuntant al primer
element de la llista, ni pop_back sobre llista buida ni amb algun dels
iteradors apuntant a l’últim element de la llista, ni ++ ni sobre
iterador apuntant al end de la llista, ni – sobre iterador apuntant al
principi de la llista, ni swapPositionsOfItems quan algun dels iteradors
apunta al end de la llista. Fixeu-vos que el end de la llista no és
l’últim element de la llista).

El programa principal que us oferim ja s’encarrega de llegir aquestes
entrades i fer les crides als corresponents mètodes de la classe list.
Només cal que implementeu els mètodes abans esmentats.

Sortida

Per a cada instrucció it1 o it2, s’escriurà el contingut apuntat per
l’iterador. El programa que us oferim ja fa això. Només cal que
implementeu el mètode abans esmentat.

Informació del problema

Autoria: PRO2

Generació: 2026-01-27T18:51:20.791Z

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