Ho difficoltà a comprendere cosa fanno i puntatori nella seconda funzione cancellaLibriCostosi.
In paricolare:
-perchè in entrambe le funzioni scrive (Lista...) nel passaggio dei parametri?
-nella seconda usa (Lista*...) non capisco se è una dichiarazione o un passaggio di parametri, ani passaggio di puntatore
-perchè nella funzione cancellaLibriCostosi usa sempre i puntatori e invece nella prima funzione no?
-se nel passaggio di parametri della seconda funzione tiro via l'*, posso tirarlo via ovunque all'interno del corpo della funzione?
Grazie

Daniele

codice:
typedef
{
       char titolo[100];
       char autore [50];
       float prezzo;
       char prestito[50];
} Tipoinfo;

typedef struct nodo
{
        tipoinfo info;
        struct nodo* next;
} Nodo;

typedef Nodo* Lista;

int contaPrestiti(Lista testa)            //funzione per contare num libri in prestito
{
    int n=0;
    Nodo* curr=testa;
    while (curr!=NULL)
    {
           if (curr->info.prestito==VERO)
           {
                 n++;
           }
           curr=curr->next;
    }
    return n;
}

void cancellaLibriCostosi (Lista* testa)                  //funzione cancella libri prezzo>100
{
      if(*testa!=NULL)
      {
             if((*testa)->info.prezzo>100)
             {
                   Nodo* temp=*testa;
                   *testa=(*testa)->next;
                   free(temp);
                   cancellaLibriCostosi (testa);
             }
             else
                   cancellaLibriCostosi(&((*testa)->next));
      }
}