Sapete dirmi perchè l'allocazione non mi funziona
#include <stdio.h>
#include <stdlib.h>
struct node {
int value;
struct node* next;
};
struct lista
{ int key;
struct lista *next;
};
typedef struct node* List;
List initList(int value);
List InserisciInCoda(List L, int value);
List InserisciInTesta(List L, int value);
struct lista *dealloca(struct lista *top);
void CancellaInCoda(List L);
List initList(int value) {
List L = (List)malloc(sizeof(struct node));
L->value=value;
L->next = NULL;
return L;
}
List InserisciInCoda(List L, int value) {
if (L != NULL) {
L->next = InserisciInCoda(L->next, value);
}
else{
L = initList(value);
}
return L;
}
List InserisciInTesta(List L, int value) {
if (L != NULL) {
List G = (List )malloc(sizeof(struct node));
G->value = value;
G->next = L;
return G;
}
return initList(value);
}
void stampaLista(List L) {
if (L != NULL) {
printf("%d\t", L->value);
stampaLista(L->next);
}
}
struct lista *dealloca(struct lista *top)
{ if(top!=NULL)
{ dealloca(top->next);
free(top);
}
return NULL;
}
int main()
{
int n;
printf("Inserire la dimensione della lista\n");
scanf("%d",&n);
List L=NULL;
int val = 0;
for(int i=0; i<n; i++){
printf("Inserire l'elemento %d della lista\n",i);
scanf("%d",&val);
L = InserisciInCoda(L,val);
}
stampaLista(L);
for(int i=0; i<n;i++ ){
printf("Inserire l'elemento %d della lista\n",i);
scanf("%d",&val);
L = InserisciInTesta(L,val);
stampaLista(L);
}
struct lista *top=NULL;
top = dealloca(top);
return 0;
}