Lista linkata in C

bio90
Salve a tutti avrei bisogno di una mano per trovare l'errore presente nel programma. L'esercizio chiede di sommare degli interi utilizzando le liste linkate.
#include<stdio.h>
#include<stdlib.h>
struct elemento{
       int valore;
       struct elemento*next;
       };
struct elemento*inserisci_elemento(struct elemento*punt_lista,int valoredainserire)  
{
 struct elemento*llist;
 if(punt_lista==NULL)    
   {
     punt_lista=(struct elemento*)malloc(sizeof(struct elemento));
     punt_lista->valore=valoredainserire;
     punt_lista->next=NULL;
     return punt_lista;   
     }
  llist=punt_lista; 
  while(llist->next!=NULL){
     llist=llist->next; 
     } 
  
  llist->next=(struct elemento*)malloc(sizeof(struct elemento));
  llist->next->valore=valoredainserire;
  llist->next->next=NULL;
  return punt_lista;
}
int somma_elementi_lista(struct elemento*punt_lista)
{ struct elemento*llist;
  int sum=0;
  int valoredainserire;
  
  if(punt_lista==NULL) {  
  return sum;}
  
  
  llist=punt_lista;
  while (llist!=NULL){
     sum +=somma_elementi_lista(llist);
     
     llist=llist->next;
     }
  return sum;
}
int main(void){
    int valore=0;
    int input=1;
    int sum=0;
    struct elemento*first=NULL;
    
    
while(input!=0){
printf("\n-- MENU SELECTION --\n");
printf("0) QUIT\n");
printf("1) INSERISCI VALORI\n");
printf("2)  SOMMA VALORI\n");
printf("SCELTA-->");
scanf("%d",&input);

switch(input) {
       case 0:
       default:
       printf("GOODBYE...\n");
       input =0;
       break;
       case 1:
       printf("INSERISCI VALORI\n");
       scanf("%d",valore);
       inserisci_elemento(first,valore);
       break;
       case 2:
       sum=somma_elementi_lista(first);
       printf("la somma dei valori e': %d",sum);
       break;
       }
}
free(first);
system("pause");
return(0);
}
    

Qualcuno potrebbe aiutarmi? grazie in anticipo :-)

Risposte
lezan
Che errore ti restituisce?
E' un errore in esecuzione, o in compilazione?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.