lo devo spezzare in due parti:

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

#define item_type_lista float

#include "../H/Liste/liste.h"

void stampa(item_type_lista *x)
{
  printf("%.2f\t", *x);
}

int compara(item_type_lista *uno, item_type_lista *due)
{
  return (int) (*uno - *due);
}

void ottieni_elemento(item_type_lista *ritorno)
{
  scanf("%f%*c",ritorno);
}

int main()
{
  
  Lista L = crea_lista();
  int scelta, posizione;
  int inserito, eliminato;
  item_type_lista elemento, elemento_vecchio;
  do {
    system("clear");
    if (!stampa_lista(L,stampa))
      printf("Lista vuota\n");
    printf("1) Inserisci elemento 2) Elimina elemento 3) Leggi elemento\n"
	   "4) Inserisci in testa 5) Inserisci in coda 6) Elimina in testa\n"
	   "7) Elimina in coda 8) Leggi in testa 9) Leggi in coda\n"
	   "10) Assegna 11) Modifica elemento 12) Modifica occorrenza\n"
	   "13) Modifica ultimo 14) Cerca 15) Cerca occorrenza\n"
	   "16) Cerca ultimo 17) Elimina elemento 18) Elimina occorrenza\n"
	   "19) Elimina ultimo 20) Elimina tutte le occorrenze di un elemento 21) Inserimento orinato\n"
	   "0) Fine\n\nScelta: ");
    scanf("%d%*c",&scelta);
    switch (scelta)
    {
      case 1:
	printf("Elemento da inserire: ");
	ottieni_elemento(&elemento);
	printf("Posizione: ");
	scanf("%d%*c",&posizione);
	inserito = inserisci(L,posizione,&elemento);
	if (inserito)
	  printf("Elemento inserito\n");
	scanf("%*c");
	break;
      case 2:
	printf("Posizione da eliminato: ");
	scanf("%d%*c",&posizione);
	eliminato = elimina(L, posizione, &elemento);
	if (eliminato)
	{
	  printf("L'elemento eliminato e': ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 3:
	printf("Posizione da esaminare: ");
	scanf("%d%*c",&posizione);
	eliminato = leggi(L,posizione,&elemento);
	if (eliminato)
	{
	  printf("L'elemento in posizione %d e': ", posizione);
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 4:
	printf("Elemento da inserire: ");
	ottieni_elemento(&elemento);
	inserito = inserisci_testa(L,&elemento);
	if (inserito)
	  printf("Elemento inserito\n");
	scanf("%*c");
	break;
      case 5:
	printf("Elemento da inserire: ");
	ottieni_elemento(&elemento);
	inserito = inserisci_coda(L,&elemento);
	if (inserito)
	  printf("Elemento inserito\n");
	scanf("%*c");
	break;
      case 6:
	eliminato = elimina_testa(L, &elemento);
	if (eliminato)
	{
	  printf("L'elemento eliminato e': ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 7:
	eliminato = elimina_coda(L, &elemento);
	if (eliminato)
	{
	  printf("L'elemento eliminato e': ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 8:
	eliminato = leggi_testa(L,&elemento);
	if (eliminato)
	{
	  printf("L'elemento in testa e': ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 9:
	eliminato = leggi_coda(L,&elemento);
	if (eliminato)
	{
	  printf("L'elemento in coda e': ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 10:
	printf("Nuovo elemento: ");
	ottieni_elemento(&elemento);
	printf("Posizione: ");
	scanf("%d%*c",&posizione);
	if ((eliminato = assegna(L, posizione, &elemento)))
	  printf("Elemento modificato\n");
	scanf("%*c");
	break;
      case 11:
	printf("Vecchio elemento: ");
	ottieni_elemento(&elemento);
	printf("Nuovo elemento: ");
	ottieni_elemento(&elemento);
	eliminato = modifica_elemento(L, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	  printf("Elemento modificato\n");
	scanf("%*c");
	break;
      case 12:
	printf("Vecchio elemento: ");
	ottieni_elemento(&elemento);
	printf("Occorrenza: ");
	scanf("%d%*c", &inserito);
	printf("Nuovo elemento: ");
	ottieni_elemento(&elemento);
	eliminato = modifica_occorrenza(L, inserito, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	  printf("Elemento modificato\n");
	scanf("%*c");
	break;
      case 13:
	printf("Vecchio elemento: ");
	ottieni_elemento(&elemento);
	printf("Nuovo elemento: ");
	ottieni_elemento(&elemento);
	eliminato = modifica_ultimo(L, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	  printf("Elemento modificato\n");
	scanf("%*c");
	break;
      case 14:
	printf("Elemento da cercare: ");
	ottieni_elemento(&elemento);
	eliminato = cerca(L, &elemento, compara);
	if (eliminato)
	  printf("Elemento presente alla posizione %d\n",eliminato);
	else
	  printf("Elemento non presente nella lista\n");
	scanf("%*c");
	break;
      case 15:
	printf("Elemento da cercare: ");
	ottieni_elemento(&elemento);
	printf("Occorrenza: ");
	scanf("%d%*c", &inserito);
	eliminato = cerca_occorrenza(L, inserito, &elemento, compara);
	if (eliminato)
	  printf("Elemento trovato in posizione %d\n", eliminato);
	scanf("%*c");
	break;
      case 16:
	printf("Elemento da cercare: ");
	ottieni_elemento(&elemento);
	eliminato = cerca_ultimo(L, &elemento, compara);
	if (eliminato)
	  printf("Elemento trovato in posizione %d\n", eliminato);
	scanf("%*c");
	break;
      case 17:
	printf("Elemento da eliminare: ");
	ottieni_elemento(&elemento_vecchio);
	eliminato = elimina_elemento(L, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	{
	  printf("Elemento eliminato: ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 18:
	printf("Elemento da eliminare: ");
	ottieni_elemento(&elemento_vecchio);
	printf("Occorrenza: ");
	scanf("%d%*c",&inserito);
	eliminato = elimina_occorrenza(L, inserito, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	{
	  printf("Elemento eliminato: ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 19:
	printf("Elemento da eliminare: ");
	ottieni_elemento(&elemento_vecchio);
	eliminato = elimina_ultimo(L, &elemento_vecchio, &elemento, compara);
	if (eliminato)
	{
	  printf("Elemento eliminato: ");
	  stampa(&elemento);
	}
	scanf("%*c");
	break;
      case 20:
	printf("Elemento da eliminare: ");
	ottieni_elemento(&elemento_vecchio);
	while (elimina_elemento(L, &elemento_vecchio, &elemento, compara))
	  ;
	printf("Eliminate tutte le occorrenze dell'elemeneto\n");
	scanf("%*c");
	break;
      case 21:
	printf("Elemento da inserire: ");
	ottieni_elemento(&elemento);
	if (inserimento_ordinato(L, &elemento, compara))
	  printf("Elemento inserito\n");
	scanf("%*c");
	break;
   default:
	break;
    }
  } while (scelta != 0);
  return 0;
}