ciao a tutti, mi sapete dire dove sbaglio nella funzione list2graph (funzione che presa uan lista ritorna un grafo)?
Codice PHP:
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
struct linked_list {
int val;
struct linked_list *next;
};
typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;
typedef struct graph{
LINK adj_list[MAX];
int num_vert;
}graph;
void inserisci(LINK *l, int dato);
void print_list(LINK l);
graph list2graph(LINK l);
int main (void)
{
int array[]={0,1,0,4,1,2,3,1};
int i;
LINK l=NULL;
for(i=0;i<8;i++)//crea la lista dall'array
inserisci(&l,array[i]);
print_list(l);
graph g=list2graph(l);
//inserire codice per stampare la lista di adiacenza
system("PAUSE");
}
/******************************************************************************/
graph list2graph(LINK l)
{
graph tmp;
tmp.num_vert=5;
while (l->next != NULL)
{
inserisci(&tmp.adj_list[l->val],l->next->val);
l=l->next;
}
return tmp;
}
/****************************funzioni liste************************************/
void inserisci(LINK *l, int dato)
{
if (*l==NULL)
{
LINK punt;
punt = malloc(sizeof(ELEMENT));
punt->next = NULL;
punt->val = dato;
*l = punt;
}
else inserisci(&((*l)->next), dato);
}
void print_list(LINK l)
{
if(l==NULL)
printf("NULL\n");
else {
printf("%d ---> ", l->val);
print_list(l->next);
}
}
sbaglio qualcosa nel corpo del while, dev-c++ compila tutto perfettamente.
grazie a tutti!