Escribe la siguiente función, que calcula la intersección de dos listas de personas en orden ascendente de DNI:
/**
* @brief Calcula la intersección de dos listas ordenadas.
*
* @param a Lista en orden ascendente de DNI.
* @param b Lista en orden ascendente de DNI.
*
* @return Lista en orden ascendente de DNI con las personas comunes de a y b.
*/
list<Persona> interseccio_ordenada(const list<Persona>& a, const list<Persona>& b);
La intersección contiene las personas que aparecen en ambas listas. Dos personas se consideran iguales si tienen el mismo DNI.
Las listas están ordenadas ascendentemente por DNI (comparación
lexicográfica de strings). La declaración de la clase
Persona es la siguiente:
class Persona {
public:
Persona(string dni, string nom); // Construye una persona
string dni() const; // devuelve el DNI
string nom() const; // devuelve el nombre
};
Debes implementar la función interseccio_ordenada en el
fichero interseccio.cc, compilar (está preparado para poder
compilar y depurar con VSCode), y finalmente enviar únicamente
el fichero interseccio.cc.
Es necesario que la función sea eficiente y que no visite elementos de forma innecesaria.
Los ficheros públicos (icono del gatito) contienen:
main.cc |
el programa principal, con la entrada/salida hecha |
persona.hh |
la clase Persona, con los
métodos mencionados |
Makefile |
para compilar con make
cómodamente |
.vscode |
carpeta para compilar y depurar con VSCode |
La función recibe dos listas de personas no modificables, ordenadas ascendentemente por DNI. (De la lectura de las listas, que están separadas por una línea vacía, ya se encarga el programa principal.)
La función devuelve la lista con las personas comunes de las dos listas, preservando el orden ascendente original. (De la escritura de la lista resultante también se encarga el programa principal.)
Input
12345678Z Anna 34567890K Clara 45678901X David 56789012T Elena 78901234B Gerard 23456789D Bernat 34567890K Clara 56789012T Elena 67890123L Ferran 89012345C Helena
Output
34567890K Clara 56789012T Elena