Salve il programma seguente non ancora completato mi da i seguenti errori:
45 cannot convert `Lista' to `int' in assignment
47 conversion from `int' to non-scalar type `Lista' requested,come mai?


codice:
/*Definire una struttura dati per memorizzare un elenco di libri.
Ciascun libro e' descritto da un autore,titolo e editore e un anno di pubblicazione.
a)Scrivere una funzione in c che acquisisca da tastiera l'elenco dei libri e li memorizzi in una variabile che deve essere restituita dalla funzione.
b)Scrivere una funzione che prenda in ingresso un elenco di libri e restituisca l'anno di uscita del libro più vecchio in elenco.La funzione deve stampare i dati
del libro piu' vecchio in elenco.
c)Scrivere infine una funzione che,preso in input il nome di un autore,restituisca se l'autore è presente in elenco.*/

#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#define MAX 150
#define LEN 1000
/*strutture dati*/
typedef struct {
        char autore[MAX];
        char titolo[MAX];
        char editore[MAX];
        int anno;
        }Libro;
typedef struct {
        Libro elementi[LEN];
        int num_libri;
         }Lista;
int menu();/*funzione di tipo int,deve restituire la scelta fatta dall'utente*/
Lista Inserimento_Libro();
void Stampa_elenco(Lista list);
int main()
{
    int scelta;
    int Lista;
    int L;
    while (scelta=menu())
    switch(scelta){
                   case 1:
                        /*inserimento*/;
                        
                        system("CLS");
                        L=Inserimento_Libro();/*qui mi segnala errore*/:confused:                       
                        printf("\n");
                        Stampa_elenco(L);
                        system("pause");
                        break;
                   case 2:
                        
                        system("CLS");
                        system("pause");
                        break;
                        /*libro_vecchio*/;
                        
                   case 3:
                        
                        system("CLS");
                        system("pause");
                        break;
                        /*cerca_autore*/;
                        
                   case 4:
                        
                        system("CLS");
                        system("pause");
                        break;
                        /*stampa*/;
                        
                   case 0:
                        return 0;/*esci*/;
                   }
    
}
int menu(){
    
    void Stampa_elenco(Lista list);
    int scelta;
    printf("GESTIONE LIBRI \n");
    printf("[1] Inserimento libro\n");
    printf("[2] Cerca libro vecchio\n");
    printf("[3] Cerca autore\n");  
    printf("[4] Stampa libri \n");
    printf("[0] esci \n\n");
    printf("scelta: ");
    scanf("%d",&scelta);
    while(scelta<0||scelta>4)
    {
    printf("Scelta non valida\n");
    printf("scelta: ");
    scanf("%d",&scelta);
    return scelta;
    }
    return scelta;
        }
    
Lista Inserimento_Libro(){
      
      Lista list;
      int i;
      printf("Quanti libri vuoi inserire? ");
      scanf("%d",&list.num_libri);
      fflush(stdin);
      for(i=0;i<list.num_libri;i++){
      printf("Inserisci autore");
      gets(list.elementi[i].autore);
      printf("Inserisci titolo");
      gets(list.elementi[i].titolo);
      printf("Inserisci editore");
      gets(list.elementi[i].editore);
      printf("Inserisci anno di pubblicazione");
      scanf("%d",&list.elementi[i].anno);
      fflush(stdin);
                                    }
      
      return list;
      }
void Stampa_elenco(Lista list)
{
     int i;
     for(i=0;i<list.num_libri;i++)
     printf("Libro n.%d\n",i);
     printf("Autore %s\n" ,list.elementi[i].autore );
     printf("Titolo %s\n",list.elementi[i].titolo );
     printf("Editore %s\n",list.elementi[i].editore );
     printf("Anno: %d\n\n",list.elementi[i].anno);
}