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 *lint 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 *lint dato)
{
    if (*
l==NULL)
    {
       
LINK punt;
       
punt malloc(sizeof(ELEMENT));
       
punt->next NULL;
       
punt->val dato;
       *
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!