Donada la classe que permet guardar seqüències d’enters amb una cua simplement encadenada, sense fantasma i circular, cal implementar el mètode constructor
cua(const vector<int> &v)
que crea una cua amb els elements del vector amb el mateix ordre.
Cal enviar a jutge.org només la implementació del mètode constructor. La classe té la següent especificació:
#include <vector>
using namespace std;
typedef unsigned int nat;
class cua {
// cua simplement encadenada, sense fantasma i circular.
private:
struct node {
int info; // Informació del node
node *seg; // Punter al següent element
};
node *_ult; // Punter a l'últim element
nat _long; // Nombre d'elements
node* copiar(node* n, node* fi, node* ini);
public:
cua();
// Pre: True
// Post: El p.i. és una cua buida.
cua(const vector<int> &v);
// Pre: True
// Post: El p.i. conté els elements de v amb el mateix ordre.
// Tres grans: constructora per còpia, operador d'assignació i destructora.
cua(const cua &c);
cua& operator=(const cua &c);
~cua();
void desencuar();
// Pre: True
// Post: Treu el primer element de la cua. Llança un error si la cua és buida.
const int& primer() const;
// Pre: True
// Post: Obté el primer element de la cua. Llança un error si la cua és buida.
bool es_buida() const;
// Pre: True
// Post: Consulta si la cua és buida o no.
nat longitud() const;
// Pre: True
// Post: Retorna el nombre d'elements del p.i.
static const int CuaBuida = 310;
};
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 d’enters amb els que crear vectors i posteriorment cues.
L’entrada conté vàries línies formades per seqüències d’enters. Cadascuna d’elles són els elements que tindrà el vector amb el que es construirà cada cua.
Per a cada línia d’entrada, escriu una línia amb el resultat: El nombre d’elements de la cua seguit d’un espai i dels elements de la cua entre claudàtors i separats per espais.
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 constructor a partir de vector. Segueix estrictament la definició de la classe de l’enunciat.
Input
3 -6 8 0 4 -2 5 9 7
Output
6 [3 -6 8 0 4 -2] 1 [5] 0 [] 2 [9 7]