oregon ha scritto:
Tu non hai fatto nulla ... hai semplicemente copiato questo
http://web2.mat.uniroma3.it/users/liverani/IN110/20010509a.shtml
Cambi codici copiati qui e lì e presupponi che ti venga scritto tutto quello che non trovi? Ma hai capito a cosa serve il forum?
PROVA TU A SCRIVERE il codice e presentalo qui, poi si vede. Soprattutto non cambiare discorso in un thread mille volte perché, come ti è stato detto mille volte, non si capisce più nulla e non si risponde più.
Hai iniziato con UN CODICE e un PROBLEMA DI STAMPA e ti ho detto cosa avevi fatto. Il thread è concluso.
UN'ALTRA STORIA E' quella relativa ad UN ALTRO CODICE e alla questione iterativa/ricorsiva CHE COMUNQUE DEVI SCRIVERE TU.
Buona giornata.
okay ho provato a scriverlo io con le librerie che ho ma non mi stampa gli adiacenti come lista di adiacenza
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "graph.h"
#include "list.h"
#define MAX 50
int main(int argc, const char * argv[]) {
int n;
Graph *G;
struct TList *L[MAX];
n = leggi_grafo(L);
G = initGraph(n);
printGraph(G);
return 0;
}
#ifndef Graph_List_h
#define Graph_List_h
struct TList {
int target;
int peso;
struct TList* next;
};
typedef struct TList* List;
// Inizializza un nuovo nodo
List initNodeList(int info, int peso);
// Stampa la lista
void printList(List L);
#endif
#ifndef Graph_Graph_h
#define Graph_Graph_h
#include "list.h"
struct Graph {
List *adj;
int nodes_count;
};
typedef struct Graph* Graph;
// Inizializza un nuovo grafo
// specifica in ingresso quanti nodi vuoi nel grafo
Graph initGraph(int nodes_count);
// Stampa il grafo
void printGraph(Graph G);
#endif
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include "graph.h"
Graph initGraph(int nodes_count) {
Graph G = (Graph)malloc(sizeof(struct Graph));
G->adj = (List *)calloc(nodes_count, sizeof(List));
G->nodes_count = nodes_count;
return G;
}
void printGraph(Graph G) {
if (G != NULL) {
int x = 0;
for (x = 0; x < G->nodes_count; x++) {
printf("%d -> ", x);
printList(G->adj[x]);
printf("\n");
}
}
}
int leggi_grafo(struct Graph *L[]) {
int i, n;
printf("Numero di vertici: ");
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("Lista di adiacenza del vertice %d.\n", i);
L[i] = leggi_lista();
}
return(n);
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "list.h"
List initNodeList(int info, int peso) {
List L = (List)malloc(sizeof(struct TList));
L->target = info;
L->peso = peso;
L->next = NULL;
return L;
}
void printList(List L) {
if (L != NULL) {
printf(" %d(%d) ", L->target, L->peso);
printList(L->next);
}
}
struct TList *leggi_lista(void) {
struct TList *p, *primo;
int x, n, i;
printf("Numero di elementi nella lista: ");
scanf("%d", &n);
primo = NULL;
for (i=0; i<n; i++) {
scanf("%d", &x);
p = malloc(sizeof(struct TList));
p->target = x;
p->next = primo;
primo = p;
}
return(primo);
}