When I execute the code it doesn't print the list, so adding the IF inside of the Lread function I discovered that *list is still NULL when I read it! Can you tell me why the Lcreate function fail to create the list? Thank you very much!!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct _elem {
int key;
struct _elem *next;
} elem;
elem* Lcreate(elem *list) {
int listsize;
scanf("%d",&listsize);
elem *p = NULL;
p = list;
elem *nuovo = NULL;
int counter=0;
while(counter<listsize){
nuovo = (elem *) malloc(sizeof(elem));
scanf("%d",&(nuovo->key));
nuovo->next=NULL;
if(p==NULL){
p=nuovo;}
else{
while(p->next!=NULL){
p=p->next;}
p->next=nuovo;}
counter++;}
}
elem* Lread(elem *list){
if (list==NULL){
printf("error\n");
}
elem *p = list;
while(p!=NULL){
printf("%d\n",p->key);
p=p->next;
}
}
main(){
struct _elem *list=NULL;
Lcreate(list);
Lread(list);
}