Dovrei solo stampare e creare un grafo con liste di adiacenza il codice sottostante va bene??
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 100
struct nodo {
int info;
struct nodo *next;
};
/*
* Acquisisce in input una sequenza di n interi e la memorizza
* in una lista; restituisce l'indirizzo del primo elemento della lista.
*/
struct nodo *leggiLista(void) {
struct nodo *p, *primo = NULL;
int i, n;
printf("Numero di elementi: ");
scanf("%d", &n);
printf("Elementi della lista: ");
for (i=0; i<n; i++) {
p = malloc(sizeof(struct nodo));
scanf("%d", &p->info);
p->next = primo;
primo = p;
}
return(primo);
}
/*
* Acquisice in input le n liste di adiacenza dei vertici del grafo G.
*/
int leggiGrafo(struct nodo *V[]) {
int i, n;
printf("\nNumero di vertici del grafo: ");
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("\nLista di adiacenza del vertice %d:\n", i);
V[i] = leggiLista();
}
return(n);
}
/*
* Stampa gli elementi di una lista.
*/
void stampaLista(struct nodo *p) {
while (p != NULL) {
printf("%d --> ", p->info);
p = p->next;
}
printf("NULL\n");
return;
}
/*
* Stampa le liste di adiacenza dei vertici del grafo G.
*/
void stampaGrafo(struct nodo *V[], int n) {
int i;
printf("Liste di adiacenza del grafo:\n");
for (i=0; i<n; i++) {
printf("%2d: ", i);
stampaLista(V[i]);
}
return;
}
int main(void) {
struct nodo *V[MAX];
n = leggiGrafo(V);
stampaGrafo(V, n);
return(0);
}