Donada la classe que permet guardar seqüències de amb una llista simplement encadenada, amb fantasma i no circular, cal implementar el mètode:
void alumne_nou(string alumne_cercat, string alumne_nou)
El mètode cerca el alumne amb nom a la llista i insereix l’alumne a la posició immediatament posterior. Si no es troba cap alumne amb nom , el nou alumne va al final de la llista. Els alumnes es representen amb que son el seu nom. No tenim alumnes repetits a la llista.
Cal enviar a jutge.org només la implementació del mètode . La classe té la següent especificació:
#include <vector>
#include <cstddef>
using namespace std;
typedef unsigned int nat;
class Llista {
// Llista simplement encadenada, amb fantasma i no circular.
private:
struct node {
string info; // Informació del node
node *seg; // Punter al següent element
};
node *_prim; // Punter a l'element fantasma
nat _long; // Nombre d'elements
public:
Llista();
// Pre: True
// Post: El p.i. és una llista buida.
Llista(const vector<int> &v);
// Pre: True
// Post: El p.i. conté els elements de v amb el mateix ordre.
~Llista();
// Post: Destrueix els elements del p.i.
nat longitud() const;
// Pre: True
// Post: Retorna el nombre d'elements del p.i.
void mostra() const;
// Pre: True
// Post: Mostra el p.i. pel canal estàndard de sortida.
void alumne_nou(string alumne_cercat, string alumne_nou);
// Pre: True
// Post: Es dona d'alta l'alumne segons l'especificació del problema
};
Per testejar la solució, jutge.org ja té implementats la resta de mètodes de la classe i un programa principal que processa línies de amb els que crea la llista i desprès crida el mètode .
L’entrada conté vàries línies formades per . Cadascuna d’elles són els elements que tindrà la llista d’alumnes inicialment. Els elements inicials de la llista venen delimitats per el "Final". A continuació, les dues darreres línies son l’alumne cercat i el nou alumne respectivament.
Escriu una línia amb el resultat desprès d’haver donat d’alta l’alumne nou, amb els noms dels alumnes separats per espais i delimitat per claudàtors tal com fa la funció de la classe .
Cal enviar la solució (el fitxer ) comprimida en un fitxer :
tar cvf solution.tar solution.cpp
Només cal enviar la implementació del mètode . Seguiu estrictament la definició de la classe de l’enunciat.
2
2
2
2
2
Input
Lluis Ona Marta Oscar Pere Ot Final Marta Carles
Output
[Lluis Ona Marta Carles Oscar Pere Ot]
Input
Lluis Ona Marta Oscar Pere Ot Final Paco Carles
Output
[Lluis Ona Marta Oscar Pere Ot Carles]
Input
Final Paco Carles
Output
[Carles]
Input
Lluis Ona Marta Oscar Pere Ot Final Lluis Carles
Output
[Lluis Carles Ona Marta Oscar Pere Ot]
Input
Lluis Ona Marta Oscar Pere Ot Final Ot Carles
Output
[Lluis Ona Marta Oscar Pere Ot Carles]