Azzerra un attimo tutto e segui il mio raggionamento.
Allora leggiamo attentamente l'esercizio:
In un laboratorio vi sono n personal computer, ciascuno individuato da un codice ed associato ad alcune informazioni come la dimensione della memoria RAM, l’elenco degli hard disk installati( ciascuno individuato da un codice e caratterizzato da una capacità e da un tempo di accesso) e l’indicazione della possibile presenza di un modem.
Da questo capiamo che abbiamo a che fare con diverse strutture e precisamente:
// HD
struct _hd
{
int codice;
int capacita;
int temp_accesso;
};
// PC
struct _computer
{
int codice;
int memoria_ram;
_hd * hard_disk_installati;//puntatore perche non sai a priori quanti hd ci sono
bool modem;
};
Prosseguiamo
Due pc possono essere connessi da un collegamento dati peer -to –peer .Ogni collegamento è bidirezionale e caratterizzato da un ritardo di trasmissione.
Da questo si capisce che abbiamo a che fare con un grafo pesato quindi prosseguiamo con la stesura del codice
struct lista_add
{
computer *pc;
int latenza;
lista_add *next;
};
Adesso dobbiamo assemblare il tutto. In sostanza dobbiamo includere la lista delle addiacenze nello struct computer cioè
// PC MODIFICATO
struct _computer
{
int codice;
int memoria_ram;
_hd * hard_disk_installati;
bool modem;
lista_add *listaAddiacenze; //puntatore perche non sai quanti elementi ci sono
};
Il vettore dei PC non è altro che un vettore di struct computer
//se N è definito a priori
_computer vettore_PC[N];
//se N è ignoto(dinamico)
_computer *vettore_PC;
Il tutto ti diventa più facile se avessi imparato le classi STL e più precisamente std::vector e/o std::list. Infine se guardi attentamente la stesura vedrai che questo codice è analogo al codice che ti ho indicato nel thread precedente.