Perchè mi da tutti questi errori nella funzione EstrazioneTestaLista?

codice:
#include <stdio.h>
#include <stdlib.h>

struct EL{
       char info;
       struct EL *prox;
       };
       
typedef struct EL Elemlista;
typedef Elemlista *Listadinomi;
typedef enum{TRUE,FALSE}   boolean;

void Inizializza(Listadinomi *Lista);// funzione che inizializza lista
void InserisciInTesta(Listadinomi *Lista, int x);
boolean ListaVuota(Listadinomi Lista);
void InserisciInCoda(Listadinomi *Lista,char y);
void EstrazioneTestaLista(Listadinomi Lista);

int main(int argc, char *argv[])
{
  Listadinomi lista1;
  int x;
  x=10;
  char y='t';
  
  Inizializza(&lista1); //inizializzazione lista
  
  InserisciInTesta(&lista1,x);
  InserisciInCoda(&lista1,y);
  
// EstrazioneTestaLista(Listadinomi lista1);
  
  if((ListaVuota(lista1))==TRUE){
                 printf("la lista e' vuota\n");
  //}else{
       // printf("la lista contiene: %d , %c\n",x,y);}
  

 
  system("PAUSE");	
  return 0;
}

void Inizializza(Listadinomi *Lista){
            *Lista=NULL;
}

boolean ListaVuota(Listadinomi Lista){
        if(Lista==NULL) return TRUE; 
        else return FALSE;
        }
        
void InserisciInTesta(Listadinomi *Lista, int x){
     Elemlista *punt;
     punt=malloc(sizeof(Elemlista));
     
     punt->info=x;
     punt->prox=*Lista;
     *Lista=punt;
}
     
void InserisciInCoda(Listadinomi *Lista,char y){
     if((ListaVuota(*Lista))==TRUE){
                   Elemlista *punt;
                   punt=malloc(sizeof(Elemlista));
                   punt->info=y;
                   punt->prox=NULL;
                   *Lista=punt;
                   } else {InserisciInCoda(&((*Lista)->prox),y);
                   } 
                   }


void EstrazioneTestaLista(Listadinomi Lista){
     Elemlista s;
    *Lista=s;
    *Lista=*Lista->prox;
     free(s); }