Oppure

Loading
22/08/12 14:56
Dice
Ho un problema nel creare un grafo:

io ho un file impostato così:

Parigi Roma 500 2.5


La prima è la città di partenza, la seconda è la città di arrivo, il pimo numero è il costo del volo, il secondo numero è la durata del volo.
Riesco a leggere tutti i valori del file, però non riesco a fare in modo che questi valori vengano inseriti nel grafo, cioè nelle due struct del grafo :(
(sapendo che uso la lista di adiacenza)

come si può risolvere ?
aaa
22/08/12 15:12
XBarboX
Posta il codice e riusciremo a capire gli errori :k:
aaa
22/08/12 15:17
Dice
typedef struct nodo_grafo
{
	char aeroporto[LUNGHEZZA_STRINGA_AEROPORTO];
	struct nodo_grafo *nodo_succ_p;
} nodo_grafo_t;

typedef struct arco_grafo
{
	int costo;
	double durata;
	struct arco_grafo *arco_succ_p;
	struct nodo_grafo *nodo_adiac_p;
} arco_grafo_t;

int main(void)
{
      [...]     /*altre variabili e acquisisco il file*/
      arco_grafo_t *nuovo_arco;
      nodo_grafo_t *grafo,
		            *nuovo_grafo;

      nuovo_grafo = (nodo_grafo_t *)malloc(sizeof(nodo_grafo_t));
			nuovo_arco = (arco_grafo_t *)malloc(sizeof(arco_grafo_t));
			strncpy(nuovo_grafo->aeroporto, citta_part, sizeof(nuovo_grafo->aeroporto));
			strncpy(nuovo_arco->nodo_adiac_p->aeroporto, citta_arr, sizeof(nuovo_arco->nodo_adiac_p));
			nuovo_arco->costo = costo;
			nuovo_arco->durata = durata;
			nuovo_arco->arco_succ_p = nuovo_arco;
			grafo = nuovo_grafo;
      [...]
return(0);
}
Ultima modifica effettuata da Dice 22/08/12 15:18
aaa
22/08/12 19:10
XBarboX
Purtroppo io il C non lo conosco bene ma posso darti uno spunto su come salvare il grafo con pseudo codice

struct arco
{
int citta_partenza;
int citta_arrivo;
int costo;
double durata;
}

struct nodo
{
NomeCitta stringa;
arco CittaCollegate[100];
int numero_citta_collegate;
}

nodo grafo[100];


Praticamente crei un vettore di nodi. Ogni città avrà un "ID"
Per esempio...
grafo[1].NomeCitta = "Roma";
grafo[1].CittaCollegate[0] = new arco("Roma","Parigi",500,2.5); //Aggiungo un arco che parte da roma fino a parigi che costa 500 e dura 2.5
grafo[1].numero_citta_collegate++;
aaa